天嵌 ARM开发社区

 找回密码
 注册
查看: 2348|回复: 9

用usb烧写的问题

[复制链接]
chenfang7977 发表于 2009-12-31 16:39:10 | 显示全部楼层 |阅读模式
请问能用usb烧写一个非程序文件到nand flash中吗,比如字库文件HZK16
亚瑟王 发表于 2009-12-31 16:41:44 | 显示全部楼层
可以,命令a。
 楼主| chenfang7977 发表于 2009-12-31 17:12:35 | 显示全部楼层
本帖最后由 chenfang7977 于 2009-12-31 17:13 编辑

你好!谢谢解答。还有个疑问,烧写的地址能自己设定吗?
我先烧个汉字库文件hzk16,出现如下的提示:
Writing data at 0x0 --   0plete.
Writing data at 0x800 --   1
Writing data at 0x1800 --   2
Writing data at 0x2800 --   3
Writing data at 0x3800 --   4lete.
Writing data at 0x4800 --   5
Writing data at 0x5800 --   6
Writing data at 0x6800 --   7lete.
Writing data at 0x7800 --   8omplete.
Writing data at 0x8800 --   9.
Writing data at 0x9800 --  10
Writing data at 0xa800 --  11
Writing data at 0xb800 --  12.
Writing data at 0xc000 --  13
Writing data at 0xd000 --  14
Writing data at 0xe000 --  15complete.
Writing data at 0xf000 --  16
Writing data at 0x10000 --  17
Writing data at 0x11000 --  18
Writing data at 0x12000 --  19te.
Writing data at 0x13000 --  20
Writing data at 0x14000 --  21e.
Writing data at 0x15000 --  22
Writing data at 0x16000 --  23.
Writing data at 0x17000 --  24
Writing data at 0x17800 --  25
Writing data at 0x18800 --  26
Writing data at 0x19800 --  27te.
Writing data at 0x1a800 --  28
Writing data at 0x1b800 --  29.
Writing data at 0x1c800 --  30
Writing data at 0x1d800 --  31
Writing data at 0x1e800 --  32te.
Writing data at 0x1f800 --  33
Writing data at 0x20800 --  34
Writing data at 0x21800 --  35
Writing data at 0x22800 --  36
Writing data at 0x23800 --  37
Writing data at 0x24000 --  38
Writing data at 0x25000 --  39
Writing data at 0x26000 --  40.
Writing data at 0x27000 --  41
Writing data at 0x28000 --  42
Writing data at 0x29000 --  43
Writing data at 0x2a000 --  44
Writing data at 0x2b000 --  45te.
Writing data at 0x2c000 --  46
Writing data at 0x2d000 --  47
Writing data at 0x2e000 --  48
Writing data at 0x2f000 --  49
Writing data at 0x2f800 --  50
Writing data at 0x30800 --  51ete.
Writing data at 0x31800 --  52
Writing data at 0x32800 --  53te.
Writing data at 0x33800 --  54
Writing data at 0x34800 --  55.
Writing data at 0x35800 --  56
Writing data at 0x36800 --  57
Writing data at 0x37800 --  58
Writing data at 0x38800 --  59
Writing data at 0x39800 --  60e.
Writing data at 0x3a800 --  61
Writing data at 0x3b800 --  62.
Writing data at 0x3c000 --  63
Writing data at 0x3d000 --  64
Writing data at 0x3e000 --  65
Writing data at 0x3f000 --  66te.
Writing data at 0x40000 --  67
Writing data at 0x41000 --  68
Writing data at 0x42000 --  69
Writing data at 0x43000 --  70
Writing data at 0x44000 --  71
Writing data at 0x45000 --  72
Writing data at 0x46000 --  73e.
Writing data at 0x47000 --  74plete.
Writing data at 0x47800 --  75
Writing data at 0x48800 --  76 complete.
Writing data at 0x49800 --  77te.
Writing data at 0x4a800 --  78
Writing data at 0x4b800 --  79.
Writing data at 0x4c800 --  80
Writing data at 0x4d800 --  81
Writing data at 0x4e800 --  82
Writing data at 0x4f800 --  83
Writing data at 0x50800 --  84e.
Writing data at 0x51800 --  85
Writing data at 0x52800 --  86
Writing data at 0x53800 --  87ete.
Writing data at 0x54000 --  88
Writing data at 0x55000 --  89
Writing data at 0x56000 --  90
Writing data at 0x57000 --  91
Writing data at 0x58000 --  92
Writing data at 0x59000 --  93
Writing data at 0x5a000 --  94 complete.
Writing data at 0x5b000 --  95
Writing data at 0x5c000 --  96
Writing data at 0x5d000 --  97e.
Writing data at 0x5e000 --  98
Writing data at 0x5f000 --  99
Writing data at 0x5f800 -- 100393216 bytes written: OK
烧写成功。
再烧写asc16文件:

Writing data at 0x0 --   1
Writing data at 0x800 --   3
Writing data at 0x1000 --   4omplete.
Writing data at 0x1800 --   6mplete.
Writing data at 0x2000 --   7plete.
Writing data at 0x2800 --   9ete.
Writing data at 0x3000 --  10
Writing data at 0x3800 --  12.
Writing data at 0x4000 --  14
Writing data at 0x4800 --  15
Writing data at 0x5000 --  17
Writing data at 0x5800 --  18
Writing data at 0x6000 --  20
Writing data at 0x6800 --  21
Writing data at 0x7000 --  23te.
Writing data at 0x7800 --  25
Writing data at 0x8000 --  26
Writing data at 0x8800 --  28
Writing data at 0x9000 --  29
Writing data at 0x9800 --  31
Writing data at 0xa000 --  32Writing data at 0xa800 --  34
Writing data at 0xb000 --  35
Writing data at 0xb800 --  37e.
Writing data at 0xc000 --  39
Writing data at 0xc800 --  40
Writing data at 0xd000 --  42
Writing data at 0xd800 --  43
Writing data at 0xe000 --  45
Writing data at 0xe800 --  46
Writing data at 0xf000 --  48
Writing data at 0xf800 --  50
Writing data at 0x10000 --  51
Writing data at 0x10800 --  53
Writing data at 0x11000 --  54
Writing data at 0x11800 --  56
Writing data at 0x12000 --  57
Writing data at 0x12800 --  59
Writing data at 0x13000 --  60
Writing data at 0x13800 --  62
Writing data at 0x14000 --  64
Writing data at 0x14800 --  65
Writing data at 0x15000 --  67
Writing data at 0x15800 --  68
Writing data at 0x16000 --  70
Writing data at 0x16800 --  71omplete.
Writing data at 0x17000 --  73
Writing data at 0x17800 --  75
Writing data at 0x18000 --  76
Writing data at 0x18800 --  78
Writing data at 0x19000 --  79
Writing data at 0x19800 --  81
Writing data at 0x1a000 --  82
Writing data at 0x1a800 --  84
Writing data at 0x1b000 --  85
Writing data at 0x1b800 --  87
Writing data at 0x1c000 --  89e.
Writing data at 0x1c800 --  90Writing data at 0x1d000 --  92.
Writing data at 0x1d800 --  93
Writing data at 0x1e000 --  95e.
Writing data at 0x1e800 --  96.
Writing data at 0x1f000 --  98
Writing data at 0x1f800 -- 100es written: OK
发现烧入的地址是一样的,那不是把原来的hzk16给覆盖了吗,可是两个文件我都有用,应该怎么办呢??
可以,命令a。
亚瑟王 发表于 2009-12-31 16:41
亚瑟王 发表于 2009-12-31 17:17:09 | 显示全部楼层
你要告诉我这个用来做什么,我才能告诉你怎么烧写。
 楼主| chenfang7977 发表于 2009-12-31 17:21:47 | 显示全部楼层
我想做的是一个裸跑的电子书程序,把汉字(hzk16)、英文(asc16)和小说的点阵文件都事先存到nand flash的相应位置。程序运行时,把他们都读到sdram中,根据小说的数据去查找点阵文件,以显示汉字和英文
亚瑟王 发表于 2010-1-4 14:32:00 | 显示全部楼层
还是使用USB下载,在uboot下载模式输入命令q退回到uboot的命令行模式,然后使用:usbslave 1 0x30000000;nand erase 开始地址 长度;nand wirte 0x30000000 开始地址 $(filesize)
说明:开始地址是指的你要存放到Nand Flash中的开始地址,必须是某个块的开始位置,长度是指的你要使用的长度。
然后你要读取时就到你刚刚烧写的位置去读取。
 楼主| chenfang7977 发表于 2010-1-4 19:06:21 | 显示全部楼层
已经烧进去了,很感谢:)
 楼主| chenfang7977 发表于 2010-1-5 22:26:10 | 显示全部楼层
不好意思,我又来了。。
按你介绍的方法把汉字点阵文件HZK(261KB)烧入:
EmbedSky> nand write 0x30000000 0xa3e0000 0x43000


NAND write: device 0 offset 0xa3e0000, size 0x43000

274432 bytes written: OK
提示烧入成功。
    然后我重启板子,在Uboot选项选7,将程序下到SDRAM里直接运行,程序中包含了将nand中的数据拷到SDRAM的函数:
    nand_read((U8*)0x31000000,0x0a3e0000,0x43000);
     功能是把nand中地址0x0a3e0000开始的0x43000个字节的数据拷到内存地址0x31000000。
    然后通过显示函数从0x31000000开始查找要显示的汉字,可是现在的问题是不管是nand中有没有字库烧入,显示的情况都是一样的,都不能正常显示,nand的初始化等应该没问题,可能说的不是很清楚,我想知道除了我程序可能有问题外,还有什么原因导致这种情况,比如2440init.s是不是应该修改?这样的程序直接烧到SDRAM中运行是不是可以?
 楼主| chenfang7977 发表于 2010-1-6 10:03:50 | 显示全部楼层
另外,由于我的板子上的nand flash是K9F2G08U0A,256m的,因此,我在对它发送地址的函数是这样的,不知道有没有问题:
static void write_addr(unsigned int addr)
{
    /*NFADDR寄存器也只用到低八位来传输,所以需要分4次来写入一个完整的32位地址,
    需要每次的移位操作*/
    rNFADDR = addr & 0xff;

    rNFADDR = (addr >> 8) & 0x0f;

    rNFADDR = (addr >> 12) & 0xff;

    rNFADDR = (addr >> 20) & 0xff;

    rNFADDR = (addr >> 28) & 0x0f;

}
亚瑟王 发表于 2010-1-7 15:40:22 | 显示全部楼层
我记得没有地址8,是从地址9开始的。很久没看nand的datasheet了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-18 02:23 , Processed in 1.031250 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表