⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 自启动flash烧录步骤.txt

📁 对于DSP自引导程序的一个实例
💻 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 + -