我手头的板子是学校的周立功MagicARM2410,原先上面有周立功的bootloader(应该也是U-boot),但是只有一个bin文件,不提供源码(很不厚道的说)。
开发环境就是我的虚拟机Vmware Workstation ACE版+Fedora12+esroot。
相关阅读:U-Boot源代码下载地址 >系统源码和编译方法,[参见连接] ( >
Arm的烧写串口可以通讯。
扩展知识:
ARM单片机是以ARM处理器为核心的一种单片微型计算机,是近年来随着电子设备智能化和网络化程度不断提高而出现的新兴产物。
举列子以 linux系统烧写串口。
arm linux系统搭建:
嵌入式常用工具:cuteftp实现windows与linux文件传输
secureCRT实现windows远程登录linux或者实现与arm机串口连接;
1、烧写u-boot/vivi到nandflash或norflash:
可以利用:h-jtag;oflash;sjf2410,超级终端等;超级终端烧写u-boot到norflash的方法: loady 0x30008000 //(按回车键;然后选择超级终端里的传送-》发送文件,输入u-boot文件的路径)
protect all off
erase 0 0x7ffff
cpd 0x30008000 0 0x80000
ps:cmpd 0 0x30008000 0x80000 //可以对比0地址与0x30008000地址开始的0x80000个字节是否相同
总结:焼写的工具是:接收命令(超级终端、secureCRT)+传输数据(tftp服务器、nfs服务器、dnw)
希望对你有帮助!嵌入式系统学习心得最近一直在看嵌入式系统方面的教程,包括arm和linux方面的知识,虽然看了不少,但除了linux外别的方面都还没有实践过,不过大体上流程还是能下来的,最近看书看的有点烦了,于是就把最近学习的笔记和心得写出来,下一步就是买一块arm9开发板进行学习
我认为嵌入式系统的定义应当是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统
比如现在ATM取款机就是一个典型RTOS,embeddedos主要包括两部分,一部分是处理器,比如ARM,POWERPC,MIPC,一部分是OS,比如linux,wince,vxworks,us/os,etc
我现在主要学习的路线是armlinux,选择arm主要是因为arm技术已经比较成熟,选择linux是因为linux是开源的,免费的,另外如果学好了linux就算将来不搞嵌入式系统开发这块,也可以专供linux服务器这一方面
学习嵌入式linux,主要做的就是四点,一点就是写bootloader,并移植到到nandflash上,第二点,编译kernel,并通过bootloader下载到nandflash上,第三点,在基于nandflash上建立文件系统,第四点,把写好的应用程序下载到target上
基本流程就是这么下来的,具体到开发板上时可能就有所差别了,下边就以深圳优龙公司的fs2410为目标板具体的上述一下开发的流程,以及在开发中应注意的问题
第一步:交叉编译环境的建立A:基于linux *** 作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主pc机所构成
目标硬件开发板用于运行 *** 作系统和系统应用软件
而目标板所用到的 *** 作系统的内核编译、应用程序的开发和调试则需要通过宿主pc机来完成(所以称为交叉编译)
双方之间一般通过串口,并口或以太网接口建立连接关系
安装linuxos,比如
0,可以采用默认安装(但要包含ftp服务),将该linux服务器接入局域网,其他的pc机可以用windows,需要的软件工具包括(1)ftp客户端程序(2)telnet工具(3)移植到某一特定arm平台的linux *** 作系统内核源码(4)gnu编译工具,可由相关网站下载在某工作站pc上安装ftp客户端程序和telnet工具,的编译一般有一个比较固定的步骤,会根据Makefiel文件的不同而略有差异,可参考相关文档,按固定的步骤编译内核完成以后,会在相应目录生成可执行的二进制文件,通过ftp传到pc机上,热后通过串口或网络下载到开发板上
B:(1)创建编译环境,在这个过程中,将设置一些环境变量,创建安装目录,安装内核源代码和头文件等
(2)创建binutils
在这个过程结束后,会创建类似arm-linux-ld等工具
(3)创建一个交叉编译版本的g,注意:在这个过程中,只能编译c程序,而不能编译c程序
(4)创建一个交叉编译版本的glibc,这里最容易出问题
(5)创建一个交叉编译版本的gdb
这个过程结束后,会创建arm-linux_gdb(6)重新创建g
前面创建g的过程没有编译c编译器,现在glibc已经准备好了,所以这个步骤将完善g的交叉编译
(7)重新创建glibc
如果在交叉编译过程中出现错误,那么请检查:版本选择是否正确,以及是否安装了相应的补丁;库文件路径设置是否正确;系统环境变量是否设置正确
第二步:编写bootloader并移植到开发板上A:bootloader(引导加载程序)是系统加电后运行的第一段代码
嵌入式系统中的bootloader相当于pc机中的bios
大多数bootloader都包含两种不同的 *** 作模式,一种是启动加载(bootloading)模式,在这种模式下,bootloader从目标机上的某个固态存储器设备上将 *** 作系统加载到RAM中运行,整个过程并没有用户的介入
这种模式是bootloader的正常工作模式,另一种是下载(downloading)模式
在这种模式下,目标机上的bootloader将通过串口或网络等通信手段从开发主机(host)上下载内核映像和根文件系统映像等到RAM中
然后可以再被bootloader写到目标机上的固态存储介质上
B:bootloader启动大多数都分为两个阶段(1):基本的硬件初始化(屏蔽所有的中断,关闭处理器内部指令/数据cache等)
为第二阶段准备RAM空间如果是从某个固态存储媒质中,则复制bootlodaer的第二阶段代码到RAM
设置堆栈
跳转到第二阶段的C程序入口点
(2):初始化本阶段要使用的硬件设备
检查系统内存映射
将内核映像和根文件系统映像从flash读到RAM
为内核设置启动参数调用内核
使用Flash模块调用Flash *** 作函数,大概顺序是先解锁flash,在擦除,接着写入,最后在上锁的顺序。注意点在于:
写入flash的代入地址要合法,也就是在正确范围内(详情见技术手册)。
每次擦除flash单位为1kb或2kb。
每次写入的字节数量必须是2字节的整数倍,也就是按16位数据为单位写入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)