KB00037 - How to build a Config File?Question:
How do I go about building a .cfg file for my custom hardware.
Generating a proper config file is the most difficult part of starting out with the BDI Probe. The config file is used to initialize your board up to the point where SDRAM and FLASH are usable. After this you can put an initial boot agent onto the board or replace the existing boot agent. The information you need to develop a successful config file is as follows:
CPU Documentation, usually the Programmer's Reference Guide or User's Manual
Board documentation, including memory map and significant chip identification
From board docs:
Flash memory data sheets
SDRAM chip data sheets
Board Clocking info
Board-level CSR Register definitions
The process is an engineering effort. Depending on the board and components used on the board, it can take anywhere from a day to a couple of weeks to get it right. Every processor and board combination is different. As an example, take a look at one of the example config files found in the distribution from Abatron for both 8xx and 4xx (i.e. a 405). Walk through each line in the [INIT] section with the corresponding processor user manual and other chip documentation and try to figure out just what it is doing to the CPU/board. That will give you a good head start on what you need to write one from scratch.
Remember that the sequence of events is usually critical, for example on the 8xx, you must set the IMMR before you can access anything else, and on many processors, you have to disable the watchdog right away. Another example is on the 8245 where you have to set up the entire memory controller registers and then set the MEMGO bit as the final step in the sequence or it doesn't work.
The task can get significantly easier if the board vendor provides you with a boot monitor and source code for it, or of an open source boot loader has already been ported to the board you are working with. You can go through the sources and copy all the register writes into the BDI config file, saving you the trouble of digging through a lot of documentation. You can also check if the register writes you performed were correct against the boot monitor/loader by bringing up the boot agent then reading the register in question with the BDI to check its contents.
So a sequence to creating a config file will be as follows:
1. Copy an existing config file from the unzipped bdi directory that most closely matches your CPU, then rename it as your own custom config file.
2. Comment out all the init sections in this config file that may not pertain to your particular CPU keeping only the IMMR section, shutting of the watchdog timer, the memory controller initialization and any sections pertaining to initializations of the Flash and SDRAM.
3. Use STARTUP RUN and let your boot loader bring up the board. At the BDI prompt, Type in "halt" to stop the target.
4. One by one read back the registers in the [INIT] section of the config file and update them with the values that are read back from the BDI. Use the md command to read back registers "md 0x0f010100".
5. Make sure you know which chip selects are needed to configure Flash for your board.
Bottom line: A developer must have specs specific to onboard CPU, board schematics and usually the FLASH and SDRAM subsystems of the board in order to be successful.
For more information on this topic, download the following White Paper at:
http://www.ultsol.com/pdfs/bdi_configuration_guide.pdfHits : 334
KB00038 - BDI2000/3000 Config File Library for Popular Hardware
Where can I get pre-built config files for my off-the-shelf board?
A complete library is available for download at:Hits : 331
KB00039 - BDI2000/3000 Config files for LogicPD Boards
Question: Where can I find a .cfg file for my Logic PD board?
You can check the library we maintain at:
You may also send an email to: firstname.lastname@example.org
Request a .cfg file for the specific board you intend to target with your BDI2000/3000. Be sure to provide the Model # and Serial # of your board.Hits : 110
KB00040 - BDI2000/3000 - Defining Target/Workspace?
What is the meaning of the term, "Defining Target/workspace"?
If a workspace is defined, the BDI uses a faster download mode. The workspace is used for a short code sequence. There must be at least 256 Bytes of RAM available for this purpose. The BDI also uses this workspace for a code sequence to flush the data cache and to access the L2 private memory. See also DCACHE and L2PM configuration parameter. The address is the address of the RAM area.
Example: WORKSPACE 0x00000000Hits : 193
KB00064 - Can't load files to memory
Q: If I define the WORKSPACE in "TARGET" of my config file, I can't seem to load a file to the memory. What could be my problem?
A: The DRAM controller may not be setup correctly. Check your User's Manual specific to the CPU you're targeting for the correct settings.Hits : 166
KB00041 - BDI2000/3000 - WORKSPACE in TARGETQuestion:
When I define the WORKSPACE in TARGET of my config file, I can't load file to the memory. What is my problem?
Most likely, the DRAM controller is not set up properly.Hits : 154
KB00126 - What changes do I need to make to my .cfg file so my BDI2000 & BDI3000 both work
What changes do I need to make to my .cfg file so my BDI2000 & BDI3000 both work.
The BDI2000 is slower than a BDI3000 when communicating with the target over JTAG.
Depending on the target, you may need to select a slower JTAG clock for the BDI2000 vs. the BDI3000. Look at the bdiGDB manual specific to the model # of the BDI probe and adjust the CLOCK parameter appropriately.
The processor may run to a different point in the boot code because the BDI2000 is slower.
Have a look at the PC after a reset. Getting the BDI probe to stop at the reset vector is always a challange because we often don't know what state the processor is in during bootup.
The time after reset, when the BDI probe can stop the processor, may vary between the BDI2000 and BDI3000.
The problem is that the system is in a different state at the time this init list is processed. This because it is not possible to halt this processor at the boot vector.
A couple of things to check For Cortex-A8/A9 Targets.
If you select EMU1=1,EMU0=0 (Wait In Reset mode WIR), then it should be possible to halt at the same address after reset with BDI3000 and BDI2000.
Check to see what kind of code runs out of reset?
If you can program your own boot code, add a loop with a timeout at the very beginning of your boot code so the BDI is able to halt the system in this loop. If there is no BDI present the code continues after the timeout.Hits : 128
KB00156 - Where can I get example .cfg files and RegDef files?
Where can I get example .cfg files and RegDef files?
Abatron delivers various .cfg and Reg fDef files with all bdiGDB versions of their firmware but if you don't see one that matches your CPU Type or hardware, you can also visit the link below to access other's that Abatron has collected over the years.
You also may want to contact USI to see what they may have in their collection. Your best bet is to send an email to email@example.com and provide the CPU Type you're targeting. Be specific as you can. Also, if the board you're targeting is an off-the-shelf board, it's common that the manufacturer also uses the BDI probes. If this is the case, they may be able to provide you with an optimized .cfg they use for their in-house development.
Link to Abatron's FTP site:
ftp://188.8.131.52/bdigdb/Hits : 104
JEFAQ Pro 1.5.1 - Joomla FAQ Extension
Hardware Debuggers (Episode 29) Interview with Fahd Abidi Download Here