SITE HOME
Section 4:
This section deals with generation of binary software code that the
processor will run.
This will make use of Keil uVision 5 IDE tool from Keil, which can be
download free of charge here.
The user will then have to follow instructions as provided in Keil tutorial on this
web site.
Once the User is ok using the Keil tool, then do a new project, call
it 'prj4' and add the following files in the project, as described
in Keil tutorial:
1. startup.s
: Get it here:
2. prj4.c
The prj4.c's listing is shown below:
typedef unsigned int uint32_t;
#define CPU_ID_REG_ADDR (uint32_t *) (0xE000ED00)
#define GPIO_1 *((uint32_t *) (0x20000ff0))
int main ()
{
int kk[5]={0xa,0xb,0xc,0xd,0xe};
int jj;
uint32_t cpu_id_var;
const uint32_t cpu_id_val = 0x410FC240;
for(jj=0;jj<kk[0];jj++)
{
asm("NOP");
cpu_id_var =
*(CPU_ID_REG_ADDR);
if(cpu_id_var ==
cpu_id_val)
{
GPIO_1
= 0x1;
}
else
{
GPIO_1
= 0x2;
}
asm("NOP");
}
while(1);
}
Let us see what the above C-code is doing.
It defines some constants using '#define',
the first one being a pointer to address location (0xE000_ED00).
This is the address of the CPU ID register.
the second one is defining the value of the location at address
0x2000_0FF0.
The main() defines some variables, and then in a for loop the
'cpu_id_var' is read from the location of the CPU ID register i.e
form the location '0xE000_ED00' then compared to a constant, and if
there is a match, the GPIO_1 location (i,e address 0x2000_0FF0) gets
a value of 0x1 otherwise it gets a value of 0x2.
One this project is ready in Keil uVision 5, click on 'options for
target' icon and then select 'user' tab, and fill in as shown below:
BTW the full command in the above window are not visible: Here it
is:
formelf -cvf
.\Objects\prj4.axf --vhx --8x1 -o image.hex
A cheat
'image.hex' file is provided here.
You can also use the 'fromelf' utility outside the Keil tool, as
described in Keil
Tutorial to generate the image.hex file.
One way or the other, you will get your 'image.hex' file which will
be needed for RTL simulations.
The above step will also produce a human
readable assembly file called disasm.txt.
Now that the 'image.hex' file is obtained, the next step is to run
the RTL simulations.
SITE HOME
Click Here to Make
Comments:
<=
Back to Section 3
Next to
Section 5 (Run RTL Simulations) =>