微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Redboot修改实例

Redboot修改实例

时间:07-25 来源:互联网 点击:

write (16'h00F2, 16'hcccc);

d) write (16'h00F3, 16'hdddd);

e) write (16'h00F4, 16'heeee);

f) write (16'h00F5, 16'hffff);

g) write (16'h00F6, 16'h5555);

h) write (16'h00F7, 16'h6666);

i) write (16'h00F8, 16'h9999);

j) write (16'h00F9, 16'h7777);

k) write (16'h00Fa, 16'h8888);

l) write (16'h00Fb, 16'h4444);

m) write (16'h00Fc, 16'h3333);

n) write (16'h00Fd, 16'h2222);

o) write (16'h00Fe, 16'h1111);

p) write (16'h00Ff, 16'h0000);

以上16条命令将16个16bit的数据分别存入cpu_buffer的地址0xF0~0xFF。

q) write (16'hf002, 16'h3c3f);

r) write (16'hf001, 16'hffff);

以上两条命令将CPU_BUFFER_OFFSET设为0xF0,将SDRAM_ADDR (SDRAM_ADDR_H, SDRAM_ADDR_L)设置为0x3FFFFF。

s) write (16'hf000, 16'h0073);

将CPU_BURST_LENGTH设置为7(实际写入为8),CPU_RW为“1”表示当前操作为写SDRAM,ACT为“1”表示立即启动当前操作。

t) read (16'hf000);

读取CONTROL_REG的数值,当ACT为“0”时,表示之前存入cpu_buffer 0xF0~0xFF的16个16bit的数据,已经被写入SDRAM中起始地址为“0x3FFFFF”的连续的8个地址中(SDRAM的数据宽度为32bit)。

main.c的修改

这一部分的修改主要目的是为了提供三条控制台命令“autoconfig”“update”“autoexec”。

增加命令

RedBoot_cmd(autoconfig,

autoconfig

,

do_autoconfig);

RedBoot_cmd(update

update,

,

do_update);

RedBoot_cmd(autoexec,

autoExec,

,

do_autoexec);

增加函数:

void do_autoconfig(int argc, char *argv[])

void do_update(int argc, char *argv[])

void do_autoexec(int argc, char *argv[])

增加全局变量

configFlag

updateFlag

execFlag

函数do_autoconfig()的主要内容

1. 设置configFlag为True

2. 调用fconfig –i

3. set Run script. at boot is false

4. set Use BOOTP for network configuration: false

5. set Gateway IP address

6. set Local IP address

7. set Local IP address mask

8. Default server IP address

9. set DNS server IP address

10. eth0 network hardware address

11. set GDB connection port

12. 设置configFlag为Flash

函数do_update()的主要内容

1. 设置updateFlag为True

2. 调用fconfig -i

3. 初始化Flash

4. 更新zimage 到 /dev/mtdblock2

5. 更新root 到 /dev/mtdblock2

6. 更新usr 到 /dev/mtdblock2

7. 更新config 到 /dev/mtdblock2

8. 更新chip 到 /dev/mtdblock2

9. 更新logo 到 /dev/mtdblock2

10. 设置updateFlag为Flash

函数do_autoexec()的主要内容

1. 设置execFlag为True

2. 调用fconfig -i

3. set Run script. at boot is true

4. set Use BOOTP for network configuration: false

5. set Gateway IP address

6. set Local IP address

7. set Local IP address mask

8. Default server IP address

9. set DNS server IP address

10. eth0 network hardware address

11. set GDB connection port

12. 设置execFlag为Flash

完成以上工作后,再对flash.c,io.c进行相关修改便可生成redboot可执行文件。注意,编译Redboot代码时最好使用arm-elf-gcc。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top