构建嵌入式Linux系统初体验

1 启动过程

  在PC上的启动流程为:
  BIOS–>windows系统–>C、D盘等–>应用程序。
  在嵌入式linux中,与PC启动流程类似:
  BootLoader–>Linux内核–>根文件系统–>应用程序。
  对比如下图:
在这里插入图片描述

  所以要在裸板上构建一个嵌入式linux系统,需要烧录bootloader、Linux内核和根文件系统。
  所用开发环境:
  开发板:mini2440
  虚拟机:ubuntu14
  本文记录编译烧写过程,这里使用已经移植好的文件。

2 uboot

1)解压文件

tar xvzf u-boot-2010.03-embedclub-201111.tar -C /(目录)

2)编译

make distclean  		#清除,第一次执行一次就可以
make smdk2440a_config	#配置
make					#编译

3)下载

  使用JLink v8将u-boot.bin烧写到开发板中,参考《JLink烧写Nor Flash步骤》。

3 内核编译下载

1)解压

  解压友善之臂光盘中文件linux-2.6.32.2-mini2440-20150709.tar。

2)配置

  在linux内核目录下有许多config_mini2440_*(不同的地方就是屏幕型号,主要区别在LCD驱动的不同)。
  复制对应的配置文件名字为.config,我用的LCD屏型号是P43,

	cp config_mini2440_P43 .config
	make menuconfig  #暂时不修改

3)编译

make zImage

  编译完成后,在arch/arm/boot中找到在zImage,此时uboot不能加载zImage,需打包一下。
  编译好的u-boot-2010.03/tools目录下,将mkimage复制到/usr/local/bin目录下。拷贝mkz2uimage到linux-2.6.32.2/arch/arm/boot。
  直接运行mkz2uimage,得到uImage。

./mkz2uimage

  mkz2uimage内容:

mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -n "Linux kernel Image by embedclub" -d zImage uImage

4)下载
  使用tftp下载,需要在虚拟机中安装TFTP工具,并在开发板中设置好TFTP server的ip。在uboot状态下,ip设置。

printenv
setenv ipaddr 192.168.1.226    // 开发板IP
setenv serverip 192.168.1.200   //Windows IP
setenv gatewayip 192.168.1.1    // 网关
saveenv

  下载uImage,开发板设置从nor flash启动,进入uboot的状态,在串口终端中输入下面的命令。

SMDK2440A>tftp 0x30008000 uImage    
#把uImage 写到内存的0x3000 8000开始的单元里 掉电后就没有的啦

SMDK2440A>nand erase 0x60000 0x500000   
#擦除 nandflash中以0x6000单元开始的大小为0x50 0000(即5M存储空间 其实内核才2M多点)

SMDK2440A>nand write 0x30008000 0x60000 0x500000 
#把内存中0x3000 8000单元开始的大小为0x50 0000内容写到 nandflash中以0x 6 0000单元开始的存储空间中 (掉电后,还是有的)

4 根文件系统

1)解压
  解压文件root_qtopia.tar.gz。
2)编译
  使用mkyaffs2image工具,将mkyaffs2image解压到根目录。

tar xvzf mkyaffs2image -C /

  在解压后的根文件系统目录下,编译。

mkyaffs2image-128  rootfs_qtopia_qt4/ rootf_qtopia.img

3)下载

tftp 0x30008000 root_qtopia.img
nand erase 0x560000 $filesize
#首先擦除Nand Flash从0x560000 开始,大小为0x3dac00的空间,来存放root_qtopia.img

nand write.yaffs 0x30008000 0x560000 $filesize 
#烧写root_qtopia.img至0x560000 开始的Nand Flash

boot   #启动Linux系统

5 Helloworld

1)程序编译
  在Ubuntu中编写hello.c文件。

#include<stdio.h>
int main()
{
  printf("hello\r\n");
  return 0;
}

  编译。

arm-linux-gcc hello.c -o hello

2)下载执行
  将编译好的hello拷贝到开发板中, 执行,看到串口终端上打印hello。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值