文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>定制自己的嵌入式开发系统[小明]

定制自己的嵌入式开发系统[小明]

时间:2006-08-24  来源:ming_nuaa

这篇文章参考了九贱的<我也来做嵌入式系统V0.1> 个人感觉九贱写的文章对于我等菜鸟是难了一点 于是将步骤简化,编译后文件系统和九贱的一样.不同在于本系统附带有完整的开发环境. 脱离主机支持,小弟在小系统中编译安装mpalyer成功后,测试一切正常. 九贱文章地址:http://blog.chinaunix.net/u/22778/showart.php?id=157133 mplayer编译详见: http://blog.chinaunix.net/u/22778/showart.php?id=157068 个人感觉windows下用msys和Linux下步骤一样.   + ming_nuaa,毕业于南京航空航天大学自动化学院.喜欢图象处理,计算机控制系统,软件破解以及网络入侵技术.

+ 现在从事基于Linux的HMC(HOME MEDIA CENTER)开发.

 

 

+ 小弟的环境和九贱不一样,介绍一下:

+ 主机:ubuntu5.10.

+ 硬盘分区:/dev/hda1 ext3 系统占用

+         /dev/hda5 ext3 开发使用

+         /dev/hda6 swap
+ 系统引导采用grub.

 

+ <第一步>

+ 建立工作目录,九贱说的太复杂,小弟精简如下:

+ 项目根目录/home/xxx/project设为PRJROOT

+ #export PRJROOT=/home/xxx/project      àxxx为用户名

+ #cd ${PRJROOT}

+ #mkdir build-tools kernel tools images

 

+ 准备工具:

+ Buildroot-20060810.tar.bz2

+ 如上文所说, buildroot事实上是一个脚本与补丁的集合,其它需要用到的软件,如gcc、uClibc,

+ 你只需在buildroot中指明相应的版本,它会自动去给你下载。所以下面的软件清单大家不要害怕,

+ 只要wget可以联网,下面的东东大家不用担心的.

+ 当然了,如果你和我一样处于公司的局域网封锁中,就只有一个一个下载了L

+ 软件清单:

autoconf-2.60.tar.bz2

automake-1.9.6.tar.bz2

bash-3.1.tar.gz

binutils-2.16.1.tar.bz2

busybox-snapshot.tar.bz2

bzip2-1.0.3.tar.gz

ccache-2.4.tar.gz

coreutils-5.96.tar.bz2

diffutils-2.8.7.tar.gz

dropbear-0.48.1.tar.gz

e2fsprogs-1.38.tar.gz

ed_0.2-19.diff.gz

ed_0.2.orig.tar.gz

fakeroot_1.5.8.tar.gz

file-4.17.tar.gz

findutils-4.2.27.tar.gz

flex_2.5.4a-24.diff.gz

flex_2.5.4a.orig.tar.gz

gawk-3.1.5.tar.bz2

gcc-3.4.2.tar.bz2

gdb-6.3.tar.bz2

genext2fs_1.3.orig.tar.gz

grep_2.5.1.ds1.orig.tar.gz

gzip-1.3.5.tar.gz

hdparm-6.5.tar.gz

less-394.tar.gz

libtool-1.5.22.tar.gz

linux-libc-headers-2.4.31.tar.bz2

m4-1.4.4.tar.bz2

make-3.81.tar.bz2

ncurses-5.5.tar.gz

netkit-base-0.17.tar.gz

patch_2.5.9.orig.tar.gz

pci.ids.bz2

pciutils-2.1.11.tar.gz

zlib-1.2.3.tar.bz2

+ 将buildroot-20060810.tar.bz2拷贝到${PRJROOT}/build-tools

+ #tar jxvf builtroot-20060810.tar.bz2

+ #cd buildroot

+ #mkdir dl à把软件清单中的软件放进去.不放也可.这个文件夹会自动生成,buildroot会自动下载到此.

+ #make menuconfig à如果系统没有安装ncurses看不到图形化配置界面,建议先装ncurses.

+ 默认的就不管了,有兴趣的自己研究研究.我们需要更改的地方如下:

1)     Build options à

(${PRJROOT}/tools) Toolchain and header file location?

2)     Board Support Options à

[*]Generic development system                      à要选中,不选也可.后面3)可以选择.

3)     Package Selection for the target à

[*]SDL                                           

+这里的选项要自己斟酌,选取自己需要的.小弟选取了SDL.其他的如python或许有人需要.

+这里选取了,软件清单相应会多.

4)     Toolchain Options --->

GCC compiler Version (gcc 3.4.2) --->;
    [*]Build/install c++ compiler and libstdc++?
    [ ]Build/install java compiler and libgcj?

+ 配置完成.

+ #make

+ 这里说说可能出现的几个错误:

+ ①:build_i386/busybox/modutils/lsmod.c 96 113

+ 原因:my_query_module()函数第三个参数有误

+ 解决:分别来函数第三个参数项前加(void*).如右所示: my_query_module(,,(void*),,)

+ ②:build_i386/busybox/modutils/rmmod.c 76

+ 原因以及解决方法如①;

+ ③:build_i386/busybox/networking/ping.c 214

+ 原因:SWAP_BE16(ntransmitted++)调用错误

+ 解决:将ntransmitted++提出作为215行.

+ 214行pkt->icmp_seq= SWAP_BE16(ntransmitted);

+ ④:gcc-3.4.2-final/i386-linux-uclibc/libstdc++-v3/include/ext/rope 934:

+ 这个是由于index的预定义与这里冲突

+ 解决方法:874行,添加:#undef index

+ 编译完成

+ #cp –af build_i386/root ${PRJROOT}/

+ 这样rootfs就完成了.其中包括了我们需要的gcc,uclibc,automake,autoconf,m4等.

 

+ <第二步>

+ 下面开始编译内核.具体的编译过程如下:

+ 1,下载内核源码:版本随意,编译后不影响系统运行.

+ 2,编译内核

+ #tar jxvf Linux-2.4.31.tar.bz2

+ #cd linux-2.4.31

+ #make ARCH=i386 CROSS_COMPILE=i386-linux- menuconfig

+ #make ARCH=i386 CROSS_COMPILE=i386-linux- clean dep

+ #make ARCH=i386 CROSS_COMPILE=i386-linux- bzImage

+ 编译完成后

+ #cp arch/i386/boot/bzImage ${PRJROOT}/images/bzImage-2.4.31-rmk1

+ 借用九贱的管理方法,后缀名不同来区分版本.

+ 内核编译清单参照九贱.这里直接引用了,如下所示.

内核编译记录:
Code maturity level options 不选
Loadable module support 不选
Processor type and features 根据实际,选择处理器类型
General setup --->;

  Networking support

  PCI support
(Any) PCI access mode

  PCI device name database

  System V IPC

  Sysctl support
(ELF) Kernel core (/proc/kcore) format

  Kernel support for ELF binaries

  Power Management support
Memory Technology Devices (MTD) --->; MTD设备,我用CF卡,不选
Parallel port support --->; 不选
Plug and Play configuration --->; 我的系统用不着即插即用,不选
Block devices --->;

  Loopback device support

  RAM disk support
(4096) Default RAM disk size (NEW)

  Initial RAM disk (initrd) support
Multi-device support (RAID and LVM) --->; 不选
Networking options --->; 基本上都选了
ATA/IDE/MFM/RLL support --->; 用了默认的
Telephony Support --->; 不选
SCSI support --->; 不选
Fusion MPT device support --->; 不选
I2O device support --->; 不选
Network device support --->; 根据实际情况选择
Amateur Radio support --->; 不选
IrDA (infrared) support --->; 不选
ISDN subsystem --->; 不选
Old CD-ROM drivers (not SCSI, not IDE) --->; 不选
Input core support --->; 不选
Character devices --->;

  Virtual terminal

  Support for console on virtual terminal

  Standard/generic (8250/16550 and compatible UARTs) serial support

  Support for console on serial port
Multimedia devices --->; 不选
File systems --->;

  Kernel automounter version 4 support (also supports v3)

  Virtual memory file system support (former shm fs)

  /proc file system support

  Second extended fs support
Console drivers --->;

  VGA text console 调试时接显示器用
剩下三个都不要
Sound --->;
USB support --->;
Kernel hacking --->;


+ <第三步>

+ 这一步是建立文件系统.由于我们以前的选择,所以这里不用和九贱一样麻烦了.

+ #cd ${PRJROOT}/root

+ #mkdir boot

+ #cp ../images/bzImage-2.4.31-rmk1 boot/vmlinux

+ ^_^,大功告成了.

+ 检验一下:

+ #chroot . /bin/sh

+ ^_^,模拟测试成功!

+ 剩下的就是把小系统安装到硬盘上了

+ 在本机的/boot/grub 目录下编辑menu.lst

+ 在本系统启动项后添加

+ title    Mylinux

+ root     (hd0,4)   

+ kernel   /boot/vmlinux root=/dev/hda5

+ initrd   /linuxrc

 

 
相关阅读 更多 +
排行榜 更多 +
僵尸生存战争汉化版

僵尸生存战争汉化版

飞行射击 下载
Turnip Boy Robs a Bank

Turnip Boy Robs a Bank

冒险解谜 下载
登山卡丁车

登山卡丁车

体育竞技 下载