"atsamv" BSP legacy network driver status

dufault at hda.com dufault at hda.com
Wed Jan 29 12:15:21 UTC 2020


> On Jan 29, 2020, at 03:13 , Christian Mauderer <christian.mauderer at embedded-brains.de> wrote:
> 
> Hello Peter,
> 
> On 28/01/2020 22:37, dufault at hda.com wrote:
>> 
>>> On Jan 28, 2020, at 04:46 , Christian Mauderer <christian.mauderer at embedded-brains.de> wrote:
>>> 
>>> Before our customers migrated to libbsd (to get some of the features
>>> there) the driver in legacy worked. But that is a few years back.
>>> Currently I only know of applications using the libbsd driver.
>>> 
>> 
>> How are you linking the libbsd code?  Where do you run the code from?
> 
> May I start with a counter-question? Are you using an evaluation board
> or some custom one? Which chip variant are you using? All projects that
> I have been involved used one of the bigger chips (SAME70 or SAMV71).

I put the BSP configuration in the original posting but I clipped it out, I tend to like to clip.  It's the SAMV71 "Xplained" Ultra.

> 
>> 
>> The application I'm testing doesn't fit in the internal SRAM provided by the default "linkcmds" in the libbsd case, partly because libbsd is bigger and partly because when I build for "libbsd" it needs "libblock".
>> 
> That depends on the project. One project where I can give you quite open
> information is GRiSP. That project is an evaluation platform for using
> Erlang on RTEMS. We did most of the initial the RTEMS stuff for it. You
> can find the basic RTEMS software here:
> 
> https://github.com/grisp/grisp-software
> 
> In this project we have a bootloader in the internal flash with some
> stuff in an SDRAM. See the linker command file for that:
> 
> https://github.com/grisp/grisp-software/blob/master/grisp-bootloader/linkcmds.bootloader
> 
> The bootloader doesn't have network support (I removed quite some bits
> with the "slim-down.h" file) but it uses libbsd for the SD card. It then
> starts a bigger RTEMS application from the SD card. That application
> uses libbsd for USB and WLAN. The application uses linkcmds.sdram from
> RTEMS.
> 
>> It fits if I use "linkcmds.sdram", but then I can't run it because the SDRAM must not be set up properly at reset, I guess I'd need to come up with something using "openocd" that will set up the SDRAM before starting the program.
>> 
>> I then tried putting just REGION_START in internal flash but it fails when it jump through a trampoline to "system_init_flash" which was still in the SDRAM.
>> 
>> Then I tried using "linkcmds.qspiflash" but the program didn't fit again since more space was required in the internal SRAM.
>> 
> 
> We have another project where QSPI is used. I can't give you all details
> but some basic information are possible:
> 
> This project starts a Bootloader from the internal flash. The bootloader
> would then start an application from QSPI XIP area. But it can also use
> libbsd for networking. The linkcmds for the bootloader look like follows:
> 
> ````````
> INCLUDE linkcmds.memory
> 
> REGION_ALIAS ("REGION_START", INTFLASH);
> REGION_ALIAS ("REGION_VECTOR", INTSRAM);
> REGION_ALIAS ("REGION_TEXT", INTFLASH);
> REGION_ALIAS ("REGION_TEXT_LOAD", INTFLASH);
> REGION_ALIAS ("REGION_RODATA", INTFLASH);
> REGION_ALIAS ("REGION_RODATA_LOAD", INTFLASH);
> REGION_ALIAS ("REGION_DATA", SDRAM);
> REGION_ALIAS ("REGION_DATA_LOAD", INTFLASH);
> REGION_ALIAS ("REGION_FAST_TEXT", ITCM);
> REGION_ALIAS ("REGION_FAST_TEXT_LOAD", INTFLASH);
> REGION_ALIAS ("REGION_FAST_DATA", DTCM);
> REGION_ALIAS ("REGION_FAST_DATA_LOAD", INTFLASH);
> REGION_ALIAS ("REGION_BSS", SDRAM);
> REGION_ALIAS ("REGION_WORK", SDRAM);
> REGION_ALIAS ("REGION_STACK", SDRAM);
> REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
> REGION_ALIAS ("REGION_NOCACHE_LOAD", INTFLASH);
> 
> INCLUDE linkcmds.armv7m
> ````````
> 
> For the application that is put into QSPIFLASH it's the following:
> 
> ````````
> INCLUDE linkcmds.memory
> 
> REGION_ALIAS ("REGION_START", QSPIFLASH);
> REGION_ALIAS ("REGION_VECTOR", INTSRAM);
> REGION_ALIAS ("REGION_TEXT", QSPIFLASH);
> REGION_ALIAS ("REGION_TEXT_LOAD", QSPIFLASH);
> REGION_ALIAS ("REGION_RODATA", QSPIFLASH);
> REGION_ALIAS ("REGION_RODATA_LOAD", QSPIFLASH);
> REGION_ALIAS ("REGION_DATA", SDRAM);
> REGION_ALIAS ("REGION_DATA_LOAD", QSPIFLASH);
> REGION_ALIAS ("REGION_FAST_TEXT", ITCM);
> REGION_ALIAS ("REGION_FAST_TEXT_LOAD", QSPIFLASH);
> REGION_ALIAS ("REGION_FAST_DATA", DTCM);
> REGION_ALIAS ("REGION_FAST_DATA_LOAD", QSPIFLASH);
> REGION_ALIAS ("REGION_BSS", SDRAM);
> REGION_ALIAS ("REGION_WORK", SDRAM);
> REGION_ALIAS ("REGION_STACK", SDRAM);
> REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
> REGION_ALIAS ("REGION_NOCACHE_LOAD", SDRAM);
> 
> INCLUDE linkcmds.armv7m
> ````````
> 
> I hope that helps.
> 
> Best regards
> 
> Christian
> 
>> 
This will help a lot.

Is the bootloader for the second project the same as the one in "grisp" but not slimmed down?

Thanks.  I should have sent this to "-users", maybe I'll post a summary there when done.

Peter
-----------------
Peter Dufault
HD Associates, Inc.      Software and System Engineering

This email is delivered through the public internet using protocols subject to interception and tampering.



More information about the devel mailing list