【嵌入式】bootloader,linux,filesystem的烧写

简介:

平台:

   深圳市优龙科技有限公司的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,如下所示


  
  
  1. Power on reset

  2. Env.Os_Lcd_Flag=0

  3. Env.Os_Auto_Flag=0

  4. <*******************************************>

  5. <*                                         *>

  6. <*         S3C2410 Board BIOS V2006        *>

  7. <*                                         *>

  8. <*         Http://www.ucdragon.com         *>

  9. <*                                         *>

  10. <*         深圳市优龙科技有限公司          *>

  11. <*                                         *>

  12. <*             版  权  所  有              *>

  13. <*                                         *>

  14. <*******************************************>

  15. NOR Flash Boot, Read ID is : 0x234b00bf

  16. SST39VF1601 found

  17. Please select function :  

  18. 0 : USB download file

  19. 1 : Uart download file

  20. 2 : Write Nand flash with download file

  21. 3 : Load Pragram from Nand flash and run

  22. 4 : Erase Nand flash regions

  23. 5 : Write NOR flash with download file

  24. 6 : Set boot params

  25. 7 : Set AutoBoot parameter,1:linux 2:wince

  26. 8 : Set Lcd Display,1:DH3.5' 2:DH4.3' 3:QC7.0' 4:QC8.0'

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

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


  
  
  1. USB download file, press Esc key to exit

  2. Now USB is connected.

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


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

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

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


  
  
  1. 2 : Write Nand flash with download file

选择2后会出现几个选项


  
  
  1. Please select which region to write : Esc to abort

  2. 0 : offset 0x0       , size 0x40000    [bootloader]

  3. 1 : offset 0x40000   , size 0x1c0000   [zImage]

  4. 2 : offset 0x200000  , size 0x1e00000  [cramfs]

  5. 3 : offset 0x2000000 , size 0x2000000  [WinCE]

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


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

  2. Are you sure? [y/n]

  3. ..............................................................................

  4. Program nand flash partition success

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

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


  
  
  1. Power on reset

  2. Env.Os_Lcd_Flag=0

  3. Env.Os_Auto_Flag=0

  4. <*******************************************>

  5. <*                                         *>

  6. <*         S3C2410 Board BIOS V2006        *>

  7. <*                                         *>

  8. <*         Http://www.ucdragon.com         *>

  9. <*                                         *>

  10. <*         深圳市优龙科技有限公司          *>

  11. <*                                         *>

  12. <*             版  权  所  有              *>

  13. <*                                         *>

  14. <*******************************************>

  15. NAND Flash Boot

  16. Please select function :  

  17. 0 : USB download file

  18. 1 : Uart download file

  19. 2 : Write Nand flash with download file

  20. 3 : Load Pragram from Nand flash and run

  21. 4 : Erase Nand flash regions

  22. 5 : Write NOR flash with download file

  23. 6 : Set boot params

  24. 7 : Set AutoBoot parameter,1:linux 2:wince

  25. 8 : Set Lcd Display,1:DH3.5' 2:DH4.3' 3:QC7.0' 4:QC8.0' 5:VGA

  26. d3

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

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


  
  
  1. Please select which region to write : Esc to abort

  2. 0 : offset 0x0       , size 0x40000    [bootloader]

  3. 1 : offset 0x40000   , size 0x1c0000   [zImage]

  4. 2 : offset 0x200000  , size 0x1e00000  [cramfs]

  5. 3 : offset 0x2000000 , size 0x2000000  [WinCE]

  6. Now write nand flash page 0x1000 from ram address 0x30200000, filesize = 28254208

  7. Are you sure? [y/n]

  8. ..........................................................................................

  9. ..........................................................................................

  10. ..........................................................................................

  11. ..........................................................................................

  12. ..........................................................................................

  13. ..........................................................................................

  14. ..........................................................................................

  15. ..........................................................................................

  16. ..........................................................................................

  17. ..........................................................................................

  18. ..........................................................................................

  19. ..........................................................................................

  20. ..........................................................................................

  21. ..........................................................................................

  22. ..........................................................................................

  23. ..........................................................................................

  24. ..........................................................................................

  25. ..........................................................................................

  26. ..........................................................................................

  27. ...............Program nand flash partition success

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

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


  
  
  1. 3 : Load Pragram from Nand flash and run

7.进入系统了有木有啊,呵呵


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

  2. Linux version 2.6.8.1-ptx1 (root@localhost.localdomain) (gcc version 3.3.2)

  3. #256 Mon Oct 29 11:46:28 HKT 2012

  4. CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)

  5. CPU: D VIVT write-back cache

  6. CPU: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

  7. CPU: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

  8. Machine: SMDK2410

  9. ATAG_INITRD is deprecated; please update your bootloader.

  10. Memory policy: ECC disabled, Data cache writeback

  11. S3C2410: core 200.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz

  12. Built 1 zonelists

  13. Kernel command line: root=1f02init=/linuxrc console=ttyS0,115200 devfs=mount

  14. display=dh240

  15. irq: clearing pending ext status 00041000

  16. irq: clearing pending status 00002000

  17. irq: clearing subpending status 00000093

  18. irq: clearing subpending status 00000092

  19. irq: clearing subpending status 00000092

  20. irq: clearing subpending status 00000092

  21. Trying to install chained handler for IRQ47

  22. PID hash table entries: 512 (order 9: 4096 bytes)

  23. setup_timer tcon=00090d09, tcnt c350, tcfg 0000040f,00001032

  24. Console: colour dummy device 80x30

  25. ………………

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


总结:

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



本文转自infohacker 51CTO博客,原文链接:http://blog.51cto.com/liucw/1169521


相关文章
|
6月前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
127 1
|
7月前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
132 3
|
7月前
|
Linux Shell
嵌入式Linux系统脚本小技巧之启动脚本
嵌入式Linux系统脚本小技巧之启动脚本
65 2
|
6月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
169 1
|
2月前
|
Ubuntu Linux Windows
linux 挂载硬盘报错 "mount: unknown filesystem type 'ntfs'"
【10月更文挑战第7天】在Linux系统中挂载硬盘时遇到“mount: unknown filesystem type &#39;ntfs&#39;”错误,是因为Linux默认可能不支持NTFS文件系统。本文提供了解决方案:安装NTFS-3G软件包以支持NTFS,并检查内核是否已加载NTFS模块。对于Ubuntu/Debian系统,可使用`sudo apt-get install ntfs-3g`命令;对于CentOS/RHEL系统,则需先安装EPEL仓库再安装NTFS-3G。此外,还需确认硬盘设备名正确无误,并创建合适的挂载点目录。
487 2
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
104 3
|
4月前
|
存储 Linux 网络安全
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
|
4月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
190 0
|
5月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
|
6月前
|
物联网 Linux 芯片
学习嵌入式是选择单片机还是Linux?
单片机通常指的是一种集成了处理器、存储器和各种外设接口的微控制器芯片,常见的有STC、51系列、AVR、ARM Cortex-M等。单片机具有低成本、低功耗、实时性强等特点,适用于对资源要求较低、功耗要求较低、实时性要求较高的嵌入式系统。学习单片机开发可以让您深入了解嵌入式系统的底层原理和硬件编程,对于对嵌入式系统底层开发感兴趣的人来说,是一个很好的选择。
139 4
下一篇
无影云桌面