# Crochet FreeBSD and U-Boot



## ThothK (Oct 28, 2016)

Hi People,

Does anyone know if Crochet FreeBSD is still actually patching U-Boot? 
Also, is Crochet FreeBSD using the most recent stable release?
Lastly, are these patches binary patches or source code changes?

This is in the context of getting FreeBSD on an NVidia Shield K1. NVidia has a modified version of U-Boot for their Linux 4 Tegra effort. I would need to diff the NVidia version and the mainline version (or whatever U-Boot version Crochet FreeBSD is currently using) and somehow get the the two merged.


=thoth=


----------



## SirDice (Nov 3, 2016)

Just read the code: https://github.com/freebsd/crochet/blob/master/lib/uboot.sh


----------



## Phishfry (Nov 3, 2016)

ThothK said:


> Also, is Crochet FreeBSD using the most recent stable release?


Crochet uses whatever version source you build with.
If you build on -CURRENT you end up with a crossbuilt -CURRENT. Build on -STABLE and you get crossbuilt stable.



ThothK said:


> Lastly, are these patches binary patches or source code changes?


There are many forks of U-Boot created by different groups of people
to support different boards.  Generally, the master U-Boot project at
denx.de has been good about adding new board support to the master
sources as such support stabilizes, but for newer boards you may
need to start from U-Boot sources provided by the board vendor.
https://github.com/freebsd/crochet/tree/master/board/NewBoardExample


----------



## ThothK (Nov 4, 2016)

Hi Phishfry,

I am walking that path this week.

It took a little bit to get the correct and current source for U-Boot that NVidia uses for the architecture. I wanted to get the same one that is used for the Ubuntu distribution that they are building since I know it works on the Shield K1. 

This week, I have been trying to get the FreeBSD cross development tools built, to no avail. I have assembled and configured five variants of FreeBSD 10.0 and 11.01 VMs, 32bit and 64bit. 
Each attempt of 'make XDEV=arm XDEV_ARCH=armv6 xdev' has failed. All but one failed with
/usr/src/lib/libc++/../../contrib/libc++/include/cstddef:43:15: fatal error:
      'stddef.h' file not found
I have read a little about this and will do another search in a bit. Likely I am going to post to the forum to as a sanity check. 

After reading and considering, I felt I should build the cross compiler tools so that I could compile NVidia's U-Boot after I figure out what I have to do change to make it FreeBSD friendly. The last part being based on Crochet FreeBSD's need to patch U-Boot.

Anyway, I am tired and frustrated right now, so the above may have to be read twice to make sense.


-thoth-


----------



## Phishfry (Nov 6, 2016)

I noticed that the K1 Shield is a tablet. Have you thought about the issues with wireless. Most of these devices depend on wireless and include no ethernet jack. Very few USB ports and a touchscreen for input. All making this challenging.
What about serial console or uarts. This will be needed unless you find a HDMI driver for the LED.
https://en.wikipedia.org/wiki/Shield_Tablet

I want to correct my statement regarding crochet. True you do end up with the crossbuilt version you build on, but you can also use another version source folder in your crochet directory and it will build with that version source.


----------



## ThothK (Nov 28, 2016)

Hi Phishfry,

My initial thought was to somehow configure the FreeBSD image to include some method of connecting to one of two different networks. My thought was that when I finally get the tablet to boot, it would try to connect. I would be able to SSH to it. 
I have no idea if this is going to work. I do not even know what I would need to do. Once I can consistently create the tools and images, then I would look into this.

For the display, the fallback plan is to use an as-yet-undefined-something from NVidia's L4T to get it to display ... something.

I am able to connect a pointing device and keyboard via the micro-usb port on the device. This is something else I have to research for this project and will explore it when it is time to do so.

It might be that I cannot get even a simple console to display or be able to connect to a wireless network. I won't know until I try.




=Thoth=


----------



## ThothK (Nov 28, 2016)

Hi,

I have spent a bit of time trying to determine how to build the compiler tools on FreeBSD so that I can compile U-Boot after integrating NVidia's changes.
It turns out there are several packages available. I did not even think to check as I am still learning FreeBSD.

Now I am going to check out the following packages:
arm-elf-binutils-2.27          GNU binutils for vanilla ARM cross-development
arm-gnueabi-binutils-2.27_4,1  GNU binutils for arm cross-development
arm-none-eabi-binutils-2.27_4,1 GNU binutils for bare metal arm cross-development
arm-none-eabi-gcc-5.3.0_1      Cross GNU Compiler Collection for armnoneeabi
arm-none-eabi-gcc492-4.9.2_2   GNU Compiler Collection for bare metal arm cross-development
arm-none-eabi-gdb-7.10_4       GNU GDB for the arm bare metal target
gcc-arm-embedded-5.4.20160622  Complete gcc-based toolcahin for embedded ARM development

Hopefully, some mix of the above will allow me to compile just U-Boot.


=Thoth=


----------

