640像素时代,免费体验,完成申请,即有双重礼遇→ 立即申请 ←
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 若没有TFFS, 如何将应用映象烧入Flash?

共2条 1/1 1 跳转至

若没有TFFS, 如何将应用映象烧入Flash?

菜鸟
2002-07-27 21:01:00    评分
若没有TFFS, 如何将应用映象烧入Flash? 来自"comp.os.vxworks""burning app in flash without buying TFFS" By Amine@263.net Q: 我想将“bootable 应用映象”烧入Flash,但是我没有TFFS支持Flash文件系统, 是否可以将映象按S-record格式烧入Flash, 但是该如何引导和执行它? 1)在引导时, 是否需要将映象从flash复制到RAM中? 如何进行? 2)标准的vxworks bootloader是否支持? A1: 其实这是一种标准做法, 可以由几种方法完成, 如下提示: 如果你的Flash可插拔,可以使用编程器, 利用S-record文件烧写Flash 如果你的Flash是贴片的,你可以连接JIG[?????]烧写Flash, 或者编写一段程序启动板子, 从串口接受S-record文件, 并擦除编写Flash. 这段代码可以放在另一片Eprom上. A2: 还有别的方法. 在生产时, 你可以使用JTAG或BDM使CPU处于调试状态. 引导扇区用于引导代码, 引导过程可以中断以更新Vxwroks映象. 一些CPU有特殊的引导模式, 允许你通过串口或其他接口下载代码, 就和JTAG/BDM一样使用. 类似前面提的JIG方法. 最后一种方法就是在板上提供特殊电路, 使CPU处于复位状态, 而你可以 直接访问Flash[比如通过并口].不过现在已没人这么做啦, 这在前些年比较普遍. 在ESC上Intel的人曾讨论这个话题, 你可以用Google搜搜. A3: 在Flash上你没有文件系统, 也可以存储映象, 只要让bootrom知道Flash中 应用的起始地址. 比如, 你有4M Flash, 起始地址为0xf0000000, 在bootrom中 设置起始地址为0xf0000000. 当Bootrom需要将映象写入Flash时, 就在起始位置 擦除/写入就行. 你没有必要将S-record文件直接写入Flash, 这需要更多的存储空间(因为它是ASCII), 而且每次启动都需要处理这个S-record文件. 很多人都有自己的bootrom, 可以从 串口或网口接受S文件, 并将S文件转为二进制映象, 再写入Flash. 也可以在主机 生成二进制映象, 并压缩, 再下载写入Flash, 以节省存储空间. 由Bootrom将代码从Flash复制到RAM. 看看bootconfig.c, 你需要做些修改. 一般由bootline指定从Flash中装入映象, 复制到RAM, 并跳转到RAM执行. bootconfig.c通过串口或网口下载映象, 处理后写入Flash. 你的Bootrom可能需要如下代码: 0)下载通道驱动, 文件格式解释, 解压缩代码, Flash驱动 1)检查bootline(在bootLoad()的usrBootLineInitCrack调用之后) 2)看是否bootline启动设备是指定关键字(如flash) 3)给定地址的映象完成校验和解压缩后, 复制到RAM中 4)跳转到RAM执行 A4: 我通过网口+tftp来完成这个工作. 在bootConfig.c中, 在tftp建立后, 在下载vxwroks映象前, 使用tftpXfer() 登录到ftp服务器, 读取你想要的文件, 并将其写入Flash.



关键词: 没有     如何     应用     映象     烧入     Flash     文件    

菜鸟
2002-07-30 07:14:00    评分
2楼
A5: 没有文件系统也可以存储和使用"bootable"映象, 但是采用文件系统有很多优点 而且实现它并不是太难. 可以写一些操作Flash的函数来创建Flash文件系统, Flash盘 驱动可以参考RAM盘的驱动来写. 这样的Flash文件系统[FFS]很简单, 它不会平均使用 Flash芯片, 但是它很实用. 首先编写Flash操作函数, 这步可能比较困难. 函数需实现整片擦除, 扇区擦除, 数据写入等功能. 第二, 复制ramDrv.*, 并更名为ffsDrv.*. 修改ffsDrv.c中的块写入函数: 先擦除扇区, 并用Flash写入函数代替bcopy(). 还需要修改"ioctl"函数, 这样实现 FIODISKFORMAT功能就会使用整片擦除函数. 最后, 在$(WIND_BASE)/target下查找引用"tffs"的所有文件, 加入新FFS的功能, 对于usrTffs.c, 可以复制保存后再修改它. 这样就得到一个简单的文件系统, 你可以化点时间试试.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]