device-tree on BeagleBone Black (enabling UART)
Oskar Holmlund
info at ohdata.se
Sun Feb 21 18:13:56 UTC 2021
2021-02-19 00:52 skrev Kristoff:
> Hi all,
>
> (inline comments)
>
> On 12/02/2021 3:15 a.m., Ian Lepore wrote:
>>
>>>> The beaglebone has a special pps driver that uses the am335x chip's
>>>> timer hardware to measure the pps pulse time with better accuracy
>>>> than
>>>> the generic gpio-pps driver. To use it, add
>>>>
>>>> am335x_dmtpps_load=YES
>>> At the same time I also wanted to try the pps driver you mention.
>>>
>>> However, it does not seams to load.
>>>
>>> I get this:
>>>
>>> [root at black1 ~]# kldload am335x_dmtpps
>>> kldload: can't load am335x_dmtpps: No such file or directory
>>>
>>>
>>> The issue seams to be this:
>>>
>>> # dmesg
>>> (...)
>>> KLD am335x_dmtpps.ko: depends on ti_sysc - not available or version
>>> mismatch
>>>
>>> Looking on my system, I seems to have the source of 'to_sysc', but
>>> not
>>> the .ko.
>>> [root at black1 ~]# locate ti_sysc
>>> /usr/src/sys/arm/ti/ti_sysc.c
>>> /usr/src/sys/arm/ti/ti_sysc.h
>>>
>>>
>>> What is the procedure to compile one single kernel-module?
>>> I tried "make ti_sysc", but that failed due to compilation errors
>>>
>>>
>> Hmm, are you using the GENERIC kernel, or a custom kernel, or what?
>> The ti_sysc device is a relative newcomer, and we may have neglected
>> to
>> add it to the GENERIC config. There probably isn't a makefile to
>> build
>> it as a module.
>>
>> So the fix for that would be to add 'device ti_sysc' to whatever
>> kernel
>> config you're using and rebuild the kernel.
>
> OK, still working on this.
>
> Still stuck:
> UART now works!
> PPS does not.
>
>
> Sofar not solution. This is my situation:
>
> - FreeBSD 12.1: device-tree does not seams to work
> - FreeBSD 12.2: for some reason, all "beaglebone" images I find on
> https://download.freebsd.org/ftp/snapshots/arm/armv7/ISO-IMAGES/12.2/
> do not boot at all, or -if they boot- have strange issues. (like a
> simple reboot taking up 2 hours!)
>
To get FreeBSD 12.2 to work on BBB you need to revert the devicetree.
https://reviews.freebsd.org/D26552
Its probably not worth your time to get 12.2 up n running, spend the
time on getting head to compile and run on your device instead.
> - FreeBSD 13.0: Now still running an version:
> --> the version I do have now is this one:
> FreeBSD 13.0-CURRENT #0 f2ea0734875-c254544(main): Thu Nov 19 09:15:27
> UTC 2020
> root at releng1.nyi.freebsd.org:/usr/obj/usr/src/arm.armv7/sys/GENERIC
>
> But that does not contain the "ti_sysc" module.
> (as stated earlier)
>
Its in the kernel for BBB, you dont need to build ti_sysc as a module.
If you dont have the ti_sysc you cant start the BBB at all.
# kldstat -v | grep ti_sysc
> -> I wanted to try a newer version, all "beaglebone" images for 13.0
> seams to have disappeared from the ftp-server
> https://download.freebsd.org/ftp/snapshots/arm/armv7/ISO-IMAGES/13.0/
>
> (actually, that folder does not even exist any more)
>
> -> I also tried using the 13.0 kernel with gpiopps module (better then
> nothing), sofar without success.
>
>
>
> So, I guess, the next step is -as you proposed- to try to compile a new
> kernel.
>
> I have never done this. I have been looking in the handbook how to do
> this.
> I guess I need to create a 'MYKERNEL' file for the beaglebone.
>
> Question. Is there a repository of 'MYKERNEL' files for board so I
> have a config-file to start from.
> I do not know all the kernel-options and hardware-features of the
> beaglebone black, it would be nice to have something to start from
> that I know actually works!
>
>
> Note:
> As proposed, I added the line "device ti_sysc" at the end of the
> configuration-file, but I get this error:
>
> config: Error: device "ti_sysc" is unknown
>
> I guess that one line in the config-file is not enough?
>
A workaround for current codebase is to add following to your kernel
config (MYKERNEL/GENERIC/whatever you call it)
device am335x_dmtpps
Recompile and ensure you have modified your loader.conf
(in my case hw.am335x_dmtpps.input="P8-9" or issue # kenv
hw.am335x_dmtpps.input="P8-9")
# dmesg | grep -i pps
uart0: PPS capture mode: DCD
am335x_dmtpps: configured pin P8-9 as input for timer5
am335x_dmtpps0: <AM335x PPS-Capture DMTimer5> mem 0-0x3ff irq 23 on
ti_sysc18
am335x_dmtpps0: Using DMTimer5 for PPS device /dev/dmtpps
To get am335x_dmtpps to work as a module ti_sysc.c needs to be modified.
Append to the end of sys/arm/ti/ti_sysc.c
MODULE_VERSION(ti_sysc, 1);
# kldload am335x_dmtpps.ko
ti_pinmux0: setting internal 2a for timer5
am335x_dmtpps: configured pin P8-9 as input for timer5
am335x_dmtpps0: <AM335x PPS-Capture DMTimer5> mem 0-0x3ff irq 23 on
ti_sysc18
Timecounter "DMTimer5" frequency 24000000 Hz quality 1000
am335x_dmtpps0: Using DMTimer5 for PPS device /dev/dmtpps
>
>
> (Anycase, I am really learning a lot here)
>
>
>> -- Ian
>>
> Cheerio!
>
> Kr. Bonne.
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
--
Bästa Hälsningar
Oskar Holmlund
Tel 070-3220292
More information about the freebsd-arm
mailing list