Update README files.
This commit is contained in:
parent
d280b0651f
commit
411057b59c
@ -10,8 +10,7 @@ Contents
|
|||||||
|
|
||||||
- STATUS
|
- STATUS
|
||||||
- Loading Code into SRAM with J-Link
|
- Loading Code into SRAM with J-Link
|
||||||
- Creating and Using DRAMBOOT
|
- DRAMBOOT, AT25BOOT, SRAMBOOT
|
||||||
- Creating and Using AT25BOOT
|
|
||||||
- Running NuttX from SDRAM
|
- Running NuttX from SDRAM
|
||||||
- Buttons and LEDs
|
- Buttons and LEDs
|
||||||
- Serial Console
|
- Serial Console
|
||||||
@ -54,192 +53,18 @@ REVISIT: Unverified, cloned text from the SAMA5D4-EK README.txt
|
|||||||
J-Link> setpc <address of __start>
|
J-Link> setpc <address of __start>
|
||||||
J-Link> ... start debugging ...
|
J-Link> ... start debugging ...
|
||||||
|
|
||||||
Creating and Using DRAMBOOT
|
DRAMBOOT, AT25BOOT, SRAMBOOT
|
||||||
===========================
|
----------------------------
|
||||||
REVISIT: Unverified, cloned text from the SAMA5D4-EK README.txt
|
|
||||||
|
|
||||||
In order to have more control of debugging code that runs out of DARM,
|
See also configs/sama5d4-ek/README.txt for a description of the DRAMBOOT
|
||||||
I created the sama5d2-xult/dramboot configuration. That configuration is
|
program. This is a tiny version of NuttX that can run out of internal
|
||||||
described below under "Configurations."
|
SRAM. If you put this program on the HSMCI1 microSD card as boot.bin, then
|
||||||
|
it will boot on power up and you can download NuttX directly into DRAM by
|
||||||
|
sending the nuttx.hex file over the serial connection.
|
||||||
|
|
||||||
Here are some general instructions on how to build an use dramboot:
|
The configs/sama5d4-ek/README.txt also describes variants AT25BOOT and
|
||||||
|
SRAMBOOT. This have not yet been ported to the SAMA5D2-XULT, but are
|
||||||
Building:
|
available if they are usefult too you.
|
||||||
1. Remove any old configurations (if applicable).
|
|
||||||
|
|
||||||
cd <nuttx>
|
|
||||||
make distclean
|
|
||||||
|
|
||||||
2. Install and build the dramboot configuration. This steps will establish
|
|
||||||
the dramboot configuration and setup the PATH variable in order to do
|
|
||||||
the build:
|
|
||||||
|
|
||||||
tools/configure.sh sama5d2-xult/dramboot
|
|
||||||
|
|
||||||
Before building, make sure the PATH environment variable includes the
|
|
||||||
correct path to the directory than holds your toolchain binaries.
|
|
||||||
|
|
||||||
NOTE: Be aware that the default dramboot also disables the watchdog.
|
|
||||||
Since you will not be able to re-enable the watchdog later, you may
|
|
||||||
need to set CONFIG_SAMA5_WDT=y in the NuttX configuration file.
|
|
||||||
|
|
||||||
Then make dramboot:
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
This will result in an ELF binary called 'nuttx' and also HEX and
|
|
||||||
binary versions called 'nuttx.hex' and 'nuttx.bin'.
|
|
||||||
|
|
||||||
3. Rename the binaries. Since you will need two versions of NuttX: this
|
|
||||||
dramboot version that runs in internal SRAM and another under test in
|
|
||||||
NOR FLASH, I rename the resulting binary files so that they can be
|
|
||||||
distinguished:
|
|
||||||
|
|
||||||
mv nuttx dramboot
|
|
||||||
mv nuttx.hex dramboot.hex
|
|
||||||
mv nuttx.bin dramboot.bin
|
|
||||||
|
|
||||||
4. Build the "real" DRAM configuration. This will create the nuttx.hex
|
|
||||||
that you will load using dramboot. Note that you must select
|
|
||||||
CONFIG_SAMA5D2XULT_DRAM_BOOT=y. This controls the origin at which the
|
|
||||||
code is linked and positions it correctly for the DRAMBOOT program.
|
|
||||||
|
|
||||||
5. Restart the system holding DIS_BOOT. You should see the RomBOOT
|
|
||||||
prompt on the 115200 8N1 serial console (and nothing) more. Hit
|
|
||||||
the ENTER key with the focus on your terminal window a few time.
|
|
||||||
This will enable JTAG.
|
|
||||||
|
|
||||||
6. Then start the J-Link GDB server and GDB. In GDB, I do the following:
|
|
||||||
|
|
||||||
(gdb) mon heal # Halt the CPU
|
|
||||||
(gdb) load dramboot # Load dramboot into internal SRAM
|
|
||||||
(gdb) mon go # Start dramboot
|
|
||||||
|
|
||||||
You should see this message:
|
|
||||||
|
|
||||||
Send Intel HEX file now
|
|
||||||
|
|
||||||
Load your program by sending the nuttx.hex via the terminal program.
|
|
||||||
Then:
|
|
||||||
|
|
||||||
(gdb) mon halt # Break in
|
|
||||||
(gdb) mon reg pc = 0x20000040 # Set the PC to DRAM entry point
|
|
||||||
(gdb) mon go # And jump into DRAM
|
|
||||||
|
|
||||||
The dramboot program can also be configured to jump directly into
|
|
||||||
DRAM without requiring the final halt and go by setting
|
|
||||||
CONFIG_SAMA5D2XULT_DRAM_START=y in the NuttX configuration. However,
|
|
||||||
since I have been debugging the early boot sequence, the above
|
|
||||||
sequence has been most convenient for me since it allows me to
|
|
||||||
step into the program in SDRAM.
|
|
||||||
|
|
||||||
7. An option is to use the SAM-BA tool to write the DRAMBOOT image into
|
|
||||||
Serial FLASH. Then, the system will boot from Serial FLASH by
|
|
||||||
copying the DRAMBOOT image in SRAM which will run, download the nuttx.hex
|
|
||||||
file, and then start the image loaded into DRAM automatically. This is
|
|
||||||
a very convenient usage!
|
|
||||||
|
|
||||||
NOTES: (1) There is that must be closed to enable use of the AT25
|
|
||||||
Serial Flash. (2) If using SAM-BA, make sure that you load the DRAM
|
|
||||||
boot program into the boot area via the pull-down menu. (3) If
|
|
||||||
you don't have SAM-BA, an alternative is to use the AT25BOOT program
|
|
||||||
described in the next section.
|
|
||||||
|
|
||||||
STATUS: I don't have a working SAM-BA at the moment and there are issues
|
|
||||||
with my AT25BOOT (see below). I currently work around these issues by
|
|
||||||
putting DRAMBOOT on a microSD card (as boot.bin). The RomBOOT loader does
|
|
||||||
boot that image without issue.
|
|
||||||
|
|
||||||
Creating and Using AT25BOOT
|
|
||||||
===========================
|
|
||||||
REVISIT: Unverified, cloned text from the SAMA5D4-EK README.txt
|
|
||||||
|
|
||||||
To work around some SAM-BA availability issues that I had at one time,
|
|
||||||
I created the AT25BOOT program. AT25BOOT is a tiny program that runs in
|
|
||||||
ISRAM. AT25BOOT will enable SDRAM and configure the AT25 Serial FLASH.
|
|
||||||
It will prompt and then load an Intel HEX program into SDRAM over the
|
|
||||||
serial console. If the program is successfully loaded in SDRAM, AT25BOOT
|
|
||||||
will copy the program at the beginning of the AT26 Serial FLASH.
|
|
||||||
If the jumpering is set correctly, the SAMA5D2 RomBOOT loader will
|
|
||||||
then boot the program from the serial FLASH the next time that it
|
|
||||||
reset.
|
|
||||||
|
|
||||||
The AT25BOOT configuration is described below under "Configurations."
|
|
||||||
|
|
||||||
Here are some general instructions on how to build an use AT25BOOT:
|
|
||||||
|
|
||||||
Building:
|
|
||||||
1. Remove any old configurations (if applicable).
|
|
||||||
|
|
||||||
cd <nuttx>
|
|
||||||
make distclean
|
|
||||||
|
|
||||||
2. Install and build the AT25BOOT configuration. This steps will establish
|
|
||||||
the AT25BOOT configuration and setup the PATH variable in order to do
|
|
||||||
the build:
|
|
||||||
|
|
||||||
tools/configure.sh sama5d2-xult/at25boot
|
|
||||||
|
|
||||||
Before building, make sure the PATH environment variable includes the
|
|
||||||
correct path to the directory than holds your toolchain binaries.
|
|
||||||
|
|
||||||
Then make AT25BOOT:
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
This will result in an ELF binary called 'nuttx' and also HEX and
|
|
||||||
binary versions called 'nuttx.hex' and 'nuttx.bin'.
|
|
||||||
|
|
||||||
3. Rename the binaries. If you want to save this version of AT25BOOT so
|
|
||||||
that it does not get clobbered later, you may want to rename the
|
|
||||||
binaries:
|
|
||||||
|
|
||||||
mv nuttx at25boot
|
|
||||||
mv nuttx.hex at25boot.hex
|
|
||||||
mv nuttx.bin at25boot.bin
|
|
||||||
|
|
||||||
4. Build the "real" DRAMBOOT configuration. This will create the
|
|
||||||
dramboot.hex that you will write to the AT25 FLASH using AT25BOOT. See
|
|
||||||
the section above entitled "Creating and Using AT25BOOT" for more
|
|
||||||
information.
|
|
||||||
|
|
||||||
5. Restart the system holding DIS_BOOT. You should see the RomBOOT
|
|
||||||
prompt on the 115200 8N1 serial console (and nothing) more. Hit
|
|
||||||
the ENTER key with the focus on your terminal window a few time.
|
|
||||||
This will enable JTAG.
|
|
||||||
|
|
||||||
6. Then start the J-Link GDB server and GDB. In GDB, I do the following:
|
|
||||||
|
|
||||||
(gdb) mon heal # Halt the CPU
|
|
||||||
(gdb) load at25boot # Load AT25BOOT into internal SRAM
|
|
||||||
(gdb) mon go # Start AT25BOOT
|
|
||||||
|
|
||||||
You should see this message:
|
|
||||||
|
|
||||||
Send Intel HEX file now
|
|
||||||
|
|
||||||
Load DRAMBOOT by sending the dramboot.hex via the terminal program.
|
|
||||||
At this point you will get messages indicated whether or not the write
|
|
||||||
to the AT25 FLASH was successful or not. When you reset the board,
|
|
||||||
it should then boot from the AT25 Serial FLASH and you should again
|
|
||||||
get the prompt:
|
|
||||||
|
|
||||||
Send Intel HEX file now
|
|
||||||
|
|
||||||
But now you are being prompted to load the DRAM program under test
|
|
||||||
(See the section above entitled "Creating and Using AT25BOOT").
|
|
||||||
|
|
||||||
7. An better option, if available, is to use the SAM-BA tool to write the
|
|
||||||
DRAMBOOT image into Serial FLASH.
|
|
||||||
|
|
||||||
NOTES: (1) There is that must be closed to enable use of the AT25
|
|
||||||
Serial Flash. (2) If using SAM-BA, make sure that you load the DRAM
|
|
||||||
boot program into the boot area via the pull-down menu.
|
|
||||||
|
|
||||||
STATUS: While this program works great and appears to correctly write
|
|
||||||
the binary image onto the AT25 Serial FLASH, the RomBOOT loader will
|
|
||||||
not boot it! I believe that is because the secure boot loader has some
|
|
||||||
undocumented requirements that I am unaware of. (2014-6-28)
|
|
||||||
|
|
||||||
Running NuttX from SDRAM
|
Running NuttX from SDRAM
|
||||||
========================
|
========================
|
||||||
@ -252,9 +77,6 @@ REVISIT: Unverified, cloned text from the SAMA5D4-EK README.txt
|
|||||||
or Barebox must be used to configure the SAMA5D2 clocks and SDRAM and
|
or Barebox must be used to configure the SAMA5D2 clocks and SDRAM and
|
||||||
then to copy the NuttX binary into SDRAM.
|
then to copy the NuttX binary into SDRAM.
|
||||||
|
|
||||||
The SRAMBOOT program is another option (see above). But this section
|
|
||||||
will focus on U-Boot.
|
|
||||||
|
|
||||||
- NuttX Configuration
|
- NuttX Configuration
|
||||||
- Boot sequence
|
- Boot sequence
|
||||||
- NAND FLASH Memory Map
|
- NAND FLASH Memory Map
|
||||||
|
@ -541,6 +541,10 @@ DRAMBOOT
|
|||||||
it will boot on power up and you can download NuttX directly into DRAM by
|
it will boot on power up and you can download NuttX directly into DRAM by
|
||||||
sending the nuttx.hex file over the serial connection.
|
sending the nuttx.hex file over the serial connection.
|
||||||
|
|
||||||
|
The configs/sama5d4-ek/README.txt also describes variants AT25BOOT and
|
||||||
|
SRAMBOOT. This have not been ported to the SAMA5D3x-EK, but are available
|
||||||
|
if they are usefult too you.
|
||||||
|
|
||||||
NAND FLASH Memory Map
|
NAND FLASH Memory Map
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
@ -210,7 +210,10 @@ int main(int argc, char **argv, char **envp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Files must begin with a comment (the file header) */
|
/* Files must begin with a comment (the file header).
|
||||||
|
* REVISIT: Logically, this belongs in the STEP 2 operations
|
||||||
|
* below.
|
||||||
|
*/
|
||||||
|
|
||||||
if (lineno == 1 && (line[n] != '/' || line[n + 1] != '*'))
|
if (lineno == 1 && (line[n] != '/' || line[n + 1] != '*'))
|
||||||
{
|
{
|
||||||
@ -1033,10 +1036,18 @@ int main(int argc, char **argv, char **envp)
|
|||||||
lineno, indent);
|
lineno, indent);
|
||||||
}
|
}
|
||||||
else if (indent > 0 && indent < 2)
|
else if (indent > 0 && indent < 2)
|
||||||
|
{
|
||||||
|
if (nnest > 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Insufficient indentation line %d:%d\n",
|
fprintf(stderr, "Insufficient indentation line %d:%d\n",
|
||||||
lineno, indent);
|
lineno, indent);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Expected indentation line %d:%d\n",
|
||||||
|
lineno, indent);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (indent > 0 && !bswitch)
|
else if (indent > 0 && !bswitch)
|
||||||
{
|
{
|
||||||
if (line[indent] == '/')
|
if (line[indent] == '/')
|
||||||
|
Loading…
Reference in New Issue
Block a user