This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
I'm trying to run and emulate the simple StarterWare program gpioLEDBlink.
It compiles and downloads to a point then I get this error:
CortxA8: Trouble Writing Memory Block at 0x80001704 on Page 0 of Length 0x38: (Error -2130 @ 0x80001704) Unable to access device memory.
It just so happens that at this address this is in the map file:
.const 0 80001704 00000038
80001704 00000038 system.lib : startup.obj (.const:vecTbl)
Any ideas on how to correct this?
I tried it with and without the sd card installed (although when the card is out win7-64 repeatedly tries to install a driver for it)
My initial thought is that the StarterWare example is attempting to load sections into DRAM on the Beaglebone platform. The base address of 0x80000000 is the DRAM interface. When CCS loads sections into memory, it performs a verification which means it will read back the values to ensure they are the same. If the DRAM controller on the AM335x is not properly configured, then the DRAM will likely not retain the data correctly because it requires the timing parameters to be correct.
The StarterWare software download includes a document as a Users Guide which provides some steps for Debugging the Beaglebone board using CCSv5. One of the steps to ensure that you have done when setting up the Target Configuration is to ensure the correct GEL file is added. This GEL file is used, upon connecting to the target, to perform some initialization of the device.
I'm able to get it running by using the AM3359.cmd config file, it puts everything here:
L3OCMC0: o = 0x40300000 l = 0x00010000 /* 64kB L3 OCMC SRAM */
vs
DDR_MEM : org = 0x80000000 len = 0x7FFFFFF /* RAM */
where the included gpioLEDBlink.cmd puts it.
I also removed the sd card and bypassed the M3_wakeupSS in BeagleBone.ccxml.
Now I need to figure out how to get it on the sd card and all it from linux - I'm learning :).
Thanks!
Emil,
That works as the <AM3359.cmd> file by default places the entire code in internal memory, which is limited to 64kB. If your code grows, you will eventually need to follow Brandon's advice to use an appropriate GEL file to properly initialize the External Memory Interface (EMIF) and use the larger external DRAM.
CCSv5.2.x comes with platform (board) GEL files that perform this initialization - simply select your board (BeagleBone, EVMAM3358, etc) when configuring your connection using the target configuration editor.
If using Linux, you will not need a Linker CMD or a GEL file. The u-boot/Linux boot process already initializes the board hardware for you and Linux will dynamically manage your application's memory requirements - in other words, it is a totally different world that even requires the use of a different compiler (GCC for Linux). For that, you will need to install and follow the Sitara Linux SDK guidelines.
Hope this helps,
Rafael