📄 自启动flash烧录步骤.txt
字号:
烧录之前有两个文件要分清,一个是要被烧写到Flash的文件(它包括2部分:前1K的内容是负责搬运1K地址后的程序;
后1K的内容是真正工作的程序),另一个是将“目标文件”烧写到Flash的烧写文件。这里为了表述的准确,特做以下
约定:(1) 被烧写的程序(包括实际运行的程序)我们通称为Source1(part1是用汇编写的搬运程序BOOT_67.ASM;
part2是实际运行的DSP程序); (2)烧录Flash的程序称做Source2
1. 将不含有part1部分的Source1程序进行编译,工程中其他文件如lnk.cmd和vectors.asm保持不变。
2. 编辑BOOT_67.ASM文件
查看包含Source1程序的目录,打开link.map文件,注意文件中SECTION ALLOCATION MAP部分的3个变量:.text,
.const和 .cinit三部分,重点关注其存储的起始地址和 长度,并据此填写part1(文件BOOT_67.ASM)的中copy_table
的三个内容:.text , .const 和 .cinit(要进行加法运算).
注意 这三个部分的格式,如 .text 部分:
第一个 .word 是变量部分的长度 ;
第二个 .word 是运行的起始地址
第三个 .word 是存储的起始地址 ;
3. 编辑vector.asm文件
(1) 将 .ref _c_int00 注释
增加 .ref _boot 语句
(2) 更改 RESET_RST 部分的内容
注释下面的语句
mvkl .S2 _c_int00, B0
mvkh .S2 _c_int00, B0
增加下面的语句
mvkl .S2 _boot, B0
mvkh .S2 _boot, B0
4. 编辑 lnk.cmd 文件
将以前的内容
MEMORY
{
vecs: o = 00000000h l = 00000200h
IRAM: o = 00000200h l = 0003FE00h
}
SECTIONS
{
"vectors" > vecs
.text > IRAM
.stack > IRAM
.bss > IRAM
.cinit > IRAM
.cio > IRAM
.const > IRAM
.data > IRAM
.switch > IRAM
.sysmem > IRAM
.far > IRAM
.tables > IRAM
}
改为
-m link.map
MEMORY
{
VECTORS_RAM: o = 0x00000000, l = 0x00000200
BOOT_RAM: o = 0x00000200, l = 0x00000200
FAST_MEM: o = 0x00000400, l = 0x0003FC00
VECTORS_FLASH: o = 0x90000000, l = 0x00000200, fill = 0
BOOT_FLASH: o = 0x90000200, l = 0x00000200, fill = 0
FLASH: o = 0x90000400, l = 0x0000F100, fill = 0
}
SECTIONS
{
.vectors load = VECTORS_FLASH, run = VECTORS_RAM, fill = 0
.boot_load load = BOOT_FLASH, run = BOOT_RAM, fill = 0
.text load = FLASH, run = FAST_MEM
.const load = FLASH, run = FAST_MEM
.cinit load = FLASH, run = FAST_MEM
.stack load = FAST_MEM
.bss load = FAST_MEM
.far load = FAST_MEM
.sysmem load = FAST_MEM
/* IMAGE_AREA load = FAST_MEM */
}
注意上面的
BOOT_RAM: o = 0x00000200, l = 0x00000200
FAST_MEM: o = 0x00000400, l = 0x0003FC00
VECTORS_FLASH: o = 0x90000000, l = 0x00000200, fill = 0
BOOT_FLASH: o = 0x90000200, l = 0x00000200, fill = 0
FLASH: o = 0x90000400, l = 0x0000F100, fill = 0
部分数据的填写!
5. 编译完整的Source1程序,得到*.out文件
6. 生成*.hex文件
方法如下:
(1) 复制*.out 文件,使之和tanslate1.exe处在同一个目录下;
(2) 编辑CMD.txt文件,其格式是 第一行是*.out文件, 第二行是 *.hex文件, 第三行是存储的起始地址(或Flash的
起始地址) ,第四行是存储器的大小(Flash的大小);
(3) 在DOS界面下运行tanslate1.exe程序,得到*.hex文件。
7. 在对Source2部分进行适当修改后,运行Source2,完成程序的烧写。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -