MINI2440和GQ2440烧录问题

2019-07-13 07:27发布

声明:以下是自己使用GQ2440和MINI2440的学习过程,仅供参考。
      刚学习嵌入式Linux时候,可能会接触到很多的知识点,内核,根文件,引导什么的,对于新手来说是相当的苦恼,而且很多问题其实只是某些配置,安装环节的失误导致后续工作根本进行不下去,我一开始使用了国嵌的教程来进行学习的,一开始就因为各种驱动安装失败的问题困扰了很久。
      在解决了些硬件上的问题后,一头扎进了supervivi,和uboot的世界(实际刚学的时候建议不要去碰太多这些东西,真的头痛,其实就是类似与windows中开启的BIOS差不多的,友情说明下国嵌里自带的supervivi是不能用的。),很多的教程都是介绍JTAG进行BIOS的烧录,但是一般大部分人都是使用“正版”J-Link来进行烧写的,MINI2440的用户手册没有介绍,建议可以看下国嵌的BIOS烧入。好不容易把supervivi 烧进了Nor-flash里。但是在烧入内核的阶段就一直失败了。检查了很久也没找到问题,浪费了很多时间。后面就换了MINI2440来使用,因为MINI2440已经烧入了好了bootloader和OS,因此其实是可以直接做一个体验再去了解其他的,但是我也不知道我做了什么操作,导致了后面的NOR-FLASH和NAND-FLASH切换没有任何的作用,直接启动启动(求教),以至于SD卡烧入不能实现,我猜想应该是和引导有关把,于是我尝试烧入一下bootloader到Nor-flash里,但是发现J-LINK都连不上,因为之前的GQ我是可以正常烧入bootloader的,于是我又还回来了,这次烧入的是MINI2440里提供的supervivi,支持SD卡的快速烧入系统,只能说黄天不负有心人,终于烧入系统成功了,可以进行下一步的学习了。下图是串口打印的信息,之后切换到NAND-FLASH就可以启动系统了。
       
SD卡烧入成功之后的界面
 典型嵌入式linux系统启动过程
1.典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的>Flash)上、OS部署在FLash(嵌入式系统中用Flash代替了硬盘)上、
内存在掉电时无作用,CPU在掉电时不工作。
2.启动过程:嵌入式系统上电后先执行uboot、然后uboot负责初始化>DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS
(OS启动后uboot就无用了)
norflash:非易失闪存,是一种外部存储介质,芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中,由于它有地址总线,cpu可以直接从norflash中取指,直接从FLASH中运行程序,但是工艺复杂,价格比较贵,容量较小(1~4M),NOR的传输效率很高
nandflash:它也是非易失闪存(掉电不丢失)的一种,但是它虽然有数据总线,但是没有地址总线,所以cpu不能直接从nandflash中取指运行,由于它价格便宜,所以常常用来存储大量数据,和我们常说的似。
嵌入式Linux一般开发流程
1.建立开发环境
2.配置开发主机
3.建立引导装载程序BOOTLOADER
4.下载别人已经移植好的linux操作系统
5.建立根文件系统
6.建立应用程序的FLASH磁盘分区
7.应用开发
一般是开发过程中是先把uboot载到nor中,然后通过nor中的uboot再把uboot跟linux 内核,根文件系统下到nandflash,它的最终位置应该是在nandflash。。。至于nor跟nand有什么区别,nor里面的代码可以直接运行,不需要加载到RAM(内存),而nandflash里面的代码需要加载到RAM才能运行,nor的速度没有ram快,所以一般最终版本的代码应该下载到nand,系统启动的时候会自动拷贝nand里面的前面4k代码到ram中,你这4k的代码必须完成硬件初始化并且把其余的代码全部拷贝到ram中。 参考:
https://zhidao.baidu.com/question/539358089.html
http://www.cnblogs.com/aaronLinux/p/5540606.html