平台:

深圳市优龙科技有限公司的FS2410(基于ARM9)

准备:

1、用串口(UART1,J8)线与PC机相连,这个是用来传输数据和显示信息的

2、连接USB数据下载线(usb device),注意需要自己装usb驱动,这个是用来下载文件的

3、设置好串口工具(超级终端或DNW工具)的参数

说明:

1、S3C2410支持两种启动模式:一种是从NAND FLASH启动;一种是从外部nGCS0片选的Nor Flash启动(jp1接上跳线帽,从NAND FLASH启动;jp1不接上跳线帽,从NOR FLASH启动)

2、在这两种启动模式下,各片选的存储空间分配是不同的,这两种启动模式的存储分配图如下

3、由于三星公司提供工具软件的缺陷,导致NorFlash烧写成功率很低,所以尽量避免烧写NorFlash,而应当去烧写NandFlash,因为如果把NandFlash烧写坏了,从NorFlash中启动BIOS,还可以马上恢复NandFlash内容,但一旦NorFlash烧写坏了,就不能从NandFlash启动来恢复NorFlash中内容了。这个时候只能用SJF来烧写,而三星提供的SJF不是很完善,不容易烧写成功!

过程

虽然是第一次设置这个东西,但是好奇的心理还是让我忍不住想自己动手把整个过程走一遍,于是我进入NorFlash把NandFlash里面的所有东西全部擦除了,然后全部重新烧写。

1.拨掉跳线帽,进入NOR,如下所示

Power on reset
Env.Os_Lcd_Flag=
Env.Os_Auto_Flag=
<*******************************************>
<* *>
<* S3C2410 Board BIOS V2006 *>
<* *>
<* Http://www.ucdragon.com *>
<* *>
<* 深圳市优龙科技有限公司 *>
<* *>
<* 版 权 所 有 *>
<* *>
<*******************************************>
NOR Flash Boot, Read ID is : 0x234b00bf
SST39VF1601 found
Please select function :
: USB download file
: Uart download file
: Write Nand flash with download file
: Load Pragram from Nand flash and run
: Erase Nand flash regions
: Write NOR flash with download file
: Set boot params
: Set AutoBoot parameter,:linux :wince
: Set Lcd Display,:DH3.' 2:DH4.3' :QC7.' 4:QC8.0'

这里选择4,然后再选择擦除0,1,2,3便可以将NAND里面的所有东西全部擦除掉了

2.选择0,用USB下载准备的S3C2410_BIOS.bin,再这之前需要安装usb手动驱动,出现

USB download file, press Esc key to exit
Now USB is connected.

则说明可以用usb下载文件了,文件下载完成后会提示是否运行

Do you want to run? [y/n] : n  

这里选择否,原因是usb下载文件只是存在内存中,还没有烧写到FLASH里面,现在需要把bios信息写到NAND FLASH里面去,才能直到引导系统的作用。

3.现在选择2,准备把刚下载的文件烧写到NAND FLASH里面去

 : Write Nand flash with download file

选择2后会出现几个选项

Please select which region to write : Esc to abort

 : offset 0x0       , size 0x40000    [bootloader]
: offset 0x40000 , size 0x1c0000 [zImage]
: offset 0x200000 , size 0x1e00000 [cramfs]
: offset 0x2000000 , size 0x2000000 [WinCE]

对应的分别是烧写bootloader、linux系统、文件系统和WinCE系统,这里我们先烧写bootloader,所以选择0

Now write nand flash page 0x200 from ram address 0x30200000, filesize = 

Are you sure? [y/n]
..............................................................................
Program nand flash partition success

烧写完成后出现类似这样的信息,现在我们就可以进入NAND的bios了

4.插上跳线帽,重启电源,进入NAND的bios,如下所示

Power on reset
Env.Os_Lcd_Flag=
Env.Os_Auto_Flag=
<*******************************************>
<* *>
<* S3C2410 Board BIOS V2006 *>
<* *>
<* Http://www.ucdragon.com *>
<* *>
<* 深圳市优龙科技有限公司 *>
<* *>
<* 版 权 所 有 *>
<* *>
<*******************************************> NAND Flash Boot
Please select function :
: USB download file
: Uart download file
: Write Nand flash with download file
: Load Pragram from Nand flash and run
: Erase Nand flash regions
: Write NOR flash with download file
: Set boot params
: Set AutoBoot parameter,:linux :wince
: Set Lcd Display,:DH3.' 2:DH4.3' :QC7.' 4:QC8.0' :VGA
d3

可以看到上面的NAND Flash Boot字样,现在boot成功了,接下来就是烧写linux系统了

5.像刚才一样用usb选择下载linux系统(zImage)和filesystem(yl2410_demo.cramfs),在烧写时选择1和2就行了

Please select which region to write : Esc to abort

 : offset 0x0       , size 0x40000    [bootloader]
: offset 0x40000 , size 0x1c0000 [zImage]
: offset 0x200000 , size 0x1e00000 [cramfs]
: offset 0x2000000 , size 0x2000000 [WinCE] Now write nand flash page 0x1000 from ram address 0x30200000, filesize = Are you sure? [y/n] ..........................................................................................
..........................................................................................
..........................................................................................
..........................................................................................
..........................................................................................
..........................................................................................
...............Program nand flash partition success

可以看到烧写文件系统的时候需要多一点的时间,不过看到success时还是会激动一下子的

6.好了,现在东西都准备好了,可以开机啦,选择3吧

 : Load Pragram from Nand flash and run

7.进入系统了有木有啊

Set boot params = root=1f02 init=/linuxrc console=ttyS0, devfs=mountdisplay=dh240

Linux version 2.6.8.1-ptx1 (root@localhost.localdomain) (gcc version 3.3.)
# Mon Oct :: HKT
CPU: ARM920Tid(wb) [] revision (ARMv4T)
CPU: D VIVT write-back cache
CPU: I cache: bytes, associativity , byte lines, sets
CPU: D cache: bytes, associativity , byte lines, sets
Machine: SMDK2410
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
S3C2410: core 200.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
Built zonelists
Kernel command line: root=1f02init=/linuxrc console=ttyS0, devfs=mount
display=dh240
irq: clearing pending ext status
irq: clearing pending status
irq: clearing subpending status
irq: clearing subpending status
irq: clearing subpending status
irq: clearing subpending status
Trying to install chained handler for IRQ47
PID hash table entries: (order : bytes)
setup_timer tcon=00090d09, tcnt c350, tcfg 0000040f,
Console: colour dummy device 80x30
……………

呵呵,下面还有很多,就省略了哈

总结:

回过头来看,过程也很简单啊,不过“会者不难,难者不会”,我也是第一天接触arm开发板,留下笔记,也许将来和我一样的人看见了,能帮助到他们。在这里谢谢f--ing(465692031)和优龙(1758893489)的帮助!

【嵌入式】bootloader,linux,filesystem的烧写的更多相关文章

  1. Linux下USB烧写uImage kernel

    Linux下USB烧写uImage kernel   1.启动开发板,进入u-boot:(如果开发板中没有系统,可以通过用SD卡方式启动开发板进入)   U-Boot 2011.06 (Mar 19 ...

  2. 嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

    1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候 ...

  3. tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74080109 版权声明:本文为博主原创文章,转载请注明http://blog.c ...

  4. 【图像处理】【SEED-VPM】5.uImage的烧写 & NFS烧写文件系统

    基于 TFTP 烧写 uImage 当用户对 SEED-VPM6467 下的内核驱动源码进行调整或者添加新的设备驱动后,需要对内核进行重新编译配置,编译生成内核镜像后,可以通过 tftp 下载到 SE ...

  5. nand烧写分析/内核在启动过程中式如何将这个文件映射成/目录及各子目录的?

    我用的是ramdisk.image.gz,烧写在flash的0x10140000处 我不太明白内核在启动过程中式如何将这个文件映射成/目录及各子目录的? 如果ramdisk.image.gz在flas ...

  6. BIN文件合并烧写

    可以实现将Bootloader和Application合并烧写 使用UBIN.exe工具或者J-Flash工具 UBIN工具 选择Bootloader源文件 添加Bootloader源文件 选择App ...

  7. 【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410

    作者 : 万境绝尘 转载请著名出处 终于拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧 ...

  8. 嵌入式系统烧写uboot/bootloader/kernel的一般方法

    嵌入式系统烧写uboot/bootloader/kernel的一般方法   本文介绍了在嵌入式系统中烧写uboot/bootloader/kernel 的一般方法,以及如果uboot或者内核出现错误, ...

  9. 2017-9-13-Linux移植:bootloader烧写

    首先看一下Linux启动过程: Linux启动过程 刚开始最重要的是Bootloader的启动,Bootloader因你改改存放到哪?怎么执行?作用是啥? bootloader的烧写: 所谓烧写也就是 ...

随机推荐

  1. QQ登录整合/oauth2.0认证-02-跳转到QQ互联页

    ---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...

  2. NSDictionary的分类

    @implementation NSDictionary (extra) //根据key值的到字典中的object - (id)getObjectByKey:(NSString*)key { NSAr ...

  3. ios用户登录记住密码

    登录 记录已登录用户步骤,存入偏好设置中存储放入一个数组. 具体存储 :存储用户到偏好设置中,其中用户是一个数组 向服务器响应客户端后的一些操作 (如果响应数据成功)其中用户和密码是一一对应的 .1先 ...

  4. iOS linker command failed with exit code 1 (use -v to see invocation)多种解决方案汇总

    有时可能会遇到这种错误,关键是这种错误,有时只有这一句话,也不会给更多错误信息. 网上找了一些,总结了如下:(PS:以下是按照解决简易程度排序,不代表出现概率) 1.bitcode问题 解决如下:原因 ...

  5. du命令解决linux磁盘空间满的问题(很不错的哦)

    首先你要确定是不是真正的是因为数据空间占满磁盘,经常是因为某个程序的日志占满了空间.当发现磁盘满了以后不要着急,使用以下命令从根目录开始排除查找哪个文件夹最大: du --max-depth=1 找到 ...

  6. 【struts2】自定义拦截器

    1)什么是自定义的拦截器 所谓自定义的拦截器,就是由我们自己定义并实现的拦截器,而不是由Struts2定义好的拦截器.虽然Struts2的预定义拦截器已经满足了大多数情况的需要.但在有些时候,我们可能 ...

  7. top 学习

    通常top命令是会持续运行而不终止的. 要在脚本里用,需要添加一些选项参数,尤其是-b.例如:top -b -n 2 -d 3 >/tmp/log -b表示批处理模式(Batch mode),以 ...

  8. 【转】Tesla Model S的设计失误

    Tesla Model S的设计失误 这幅美丽的图片,就是红极一时的Tesla电动车Model S的内景.然而你有没有发现,其中有一些不大对劲的地方?虽然我看好电动汽车,它们环保,安静,运动敏捷,然而 ...

  9. [转]PostgreSQL教程(十六):系统视图详解

    这篇文章主要介绍了PostgreSQL教程(十六):系统视图详解,本文讲解了pg_tables.pg_indexes.pg_views.pg_user.pg_roles.pg_rules.pg_set ...

  10. 常用代码之四:创建jason,jason转换为字符串,字符串转换回jason,c#反序列化jason字符串的几个代码片段

    1.创建jason,并JSON.stringify()将之转换为字符串. 直接使用var customer={}, 然后直接customer.属性就可以直接赋值了. 也可以var customer = ...