使用用户自己编写的烧写Flash的程序较为灵活,避免了文件格式转换的繁琐。不过,此方法要求用户对自己使用的Flash芯片较为熟悉。
工字电感通常采用的Flash烧写程序是单独建立一个工程的办法:先把用户应用程序(包含二级Bootloader)编译生成的.out文件装载到目标DSP系统的RAM中,再把烧写Flash的上程编译生成的.out文件装载到目标DSP系统RAM的另一地址范围,执行Flash烧写程序,完成对Flash的烧写。这个办法要注意避免两次装载可能产生的地址覆盖,防止第2次装载修改了应该写入Flash的第1次装载的内容。
实际上,可以将Flash烧写程序嵌入到用户主程序代码中去,比单独建立一个烧写Flash的工程更为方便。Flash芯片的烧写程序段如下:
ChipErase函数和ProgramFlashArray函数的编写可参照用户使用的Flash芯片的Datasheet以及参考文献。
ProgramFlashArray函数的第1个参数是源地址指针(指向内部Ram),第2个参数是目标地址指针(指向外部Flash),第3个参数是要写入的数据长度(单位为字)。
编写Flash烧写函数时有3点需要注意:
①指向Flash地址的指针。由于C6713的低两位地址用于译码作字节选择,地址总线的最低位是EA2,所以,逻辑地址需要适当的移位才能正确地指向目标。
对8位存储器而言电感厂家,应该左移2位;对16位存储器而言,应该左移l位;对于32位存储器,则不需要移位。例如要从(往)Flash的0x00000003地址读(写)一个字,其逻辑地址应该是0x90000000+(Ox0003<<1),而非0x90000003。
②map文件中各内存区间被实际占用的尺寸大小是以字节为单位的,而ProgramFlashArray函数写入Flash的数据单位为字,所以需要将map文件中得到的尺寸大小的一半作为ProgramFlashArray函数的参数。
③烧写函数中使用了flash_burned常量作为判断是否需要对Flash操作的依据,且将其初始化为1。这是为了避免Flash加载之后会执行对Flash的操作。此变量应在烧写Flash时手动修改为0。
在仿真加载方式下,可以在CCS里的watchwindow窗口手动修改flash_burned常量为O,强迫CPU进入对Flash编程的程序段。实验证明,在仿真加载方式下手动修改flash_burned并不影响写入到Flash中的flash_burn-ed的值(仍为1),所以,写入Flash的flash_burned的值仍然是l。在系统Flash加载之后,CPU就会跳过此段代码,实现正确运行。
传统印刷与数码印刷的比较数码印刷是印刷技术数字化和网络化发展的新生事物,也是印刷技术发展的一个焦点。其数字化过程可以直接从计算机到纸张或印刷品,工序间不需要胶片和印版,无传统印刷的繁琐工序。
固定直流稳压电源 (四)本例介绍的固定直流稳压电源电路,采用七只发光二极管 (LED)组成的数字显示器来显示输出电压 (有3V和6V两档),具有电路简单实用,制作容易等特点。电路工作原理该固定直流稳压电源电路由稳压电路和显示
电源管理的原理和方法电源设计工程师通常采用灵活的电源监控、时序控制和调节电路对系统进行管理。本文主要讨论电源管理的原理和方法。多年来,随着系统内电源数量的增多,为了确保其安全、经济、持续和正常的工作,特别是在使用微处理器