Date: Fri, 30 Dec 2016 11:33:01 -0800 From: Thomas Skibo <thomasskibo@yahoo.com> To: freebsd-arm@freebsd.org, =?utf-8?Q?Daniel_H=C3=BCbleitner?= <daniel.huebleitner@student.tuwien.ac.at> Subject: Re: Finally bringing FreeBSD to Parallella Message-ID: <2CAC521E-AB65-453F-B1CC-DE025DA43596@yahoo.com>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] Hello. Using the GNU dts files for Zynq boards is not as easy as just adding the proper compat strings. Off the top of my head: - A range of physical memory must be reserved because it is not accessible by all AXI masters. This is done in zynq-7000.dtsi right now but maybe it can be done in zy7_machdep.c (?)) - Several peripherals (including mpcore-timers) must derive their reference clock speed automagically from the PS clock speed instead of being specified in each peripheral's device tree entry. - The ethernet driver needs to be able to change its reference clock in response to media speed changes. The hack I use for this requires the ethernet’s device tree entry to specify the “unit number" of its reference clock so it can request speed changes from the SLCR block. It’s kind of on my to-do list to have GNU DTS files working for 12.0 but I haven’t been working on it lately. Regarding Parallella: I had FreeBSD booting on Parallella several years ago but I bricked my board and so I stopped updating it. The Parallella has u-boot in a flash memory but without the API option. Rather than trying to re-flash the u-boot and risk bricking the Parallella (which I eventually did anyway), I packaged a u-boot binary with the proper options in a uImage file so the boot process was FSBL —> U-boot —> U-boot —> ubldr —> FreeBSD. The uImage file I used is in a tarball at http://www.skibo.net/zedbsd/parallella_freebsd.tgz . I think it would be better, for now, to use RELEASE-11.0 which has good Zynq support and just come up with a BSD style DTS file for Parallella. I think the only difference between Parallella and Zedboard is that the SD card is attached to SDHCI1 instead of SDHCI0 and the memory size is larger. My best guess for a DTS file is attached. Happy New Year. — Thomas Skibo thomasskibo@yahoo.com [-- Attachment #2 --] /*- * Copyright (c) 2016 The FreeBSD Foundation * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ /dts-v1/; /include/ "zynq-7000.dtsi" / { model = "parallella"; compatible = "adapteva,parallella"; memory { // First megabyte isn't accessible by all interconnect masters. device_type = "memory"; reg = <0x100000 0x3ff00000>; /* 1GB RAM at 0x100000 */ }; fb0: fb@43000000 { compatible = "xlnx,xlnx-fb"; reg = <0x43000000 0x10000>, <0x43c00000 0x10000>; }; chosen { stdin = &uart1; stdout = &uart1; }; }; &slcr { clock-frequency = <33333333>; // 33Mhz PS_CLK }; &global_timer { clock-frequency = <333333333>; // 333Mhz }; &uart1 { status = "okay"; }; ð0 { status = "okay"; }; &sdhci1 { status = "okay"; }; &ehci0 { status = "okay"; };
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2CAC521E-AB65-453F-B1CC-DE025DA43596>
