打印

构建自己的嵌入式系统(linux篇)

[复制链接]
183|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
稻花香1号|  楼主 | 2018-9-29 20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
############################################################

## Create a linux system for my SKY2440 Board

##

## SKY2440 Board info:

## CPU    : ARM9, S3C2440AL, 400HMz

## SDRAM  : 64MB

## FLASH  : NAND 64MB, NOR 2MB

## NETWORK: DM9000 100MB

## OTHER  : 3" LCD + Touch Screen, 1.1 Host/Slave USB,

##          3 LEDs, 4 Buttons, 3 Serial, 2 ADC,

##          Audio Input/Output, SD/MMC Interface,

##          Camera Interface, etc.

##

## 2009-01-18 by fi9

##

############################################################

## make a build env

1) install a debian linux in your computer (PC, MAC, etc.)or virtual computer (like VMware, virtual PC, etc.)

you can just install a mini debian linux, then install something what is you need in next work. (binutils, gcc, etc.)

2) install and configure any server. (like nfs, tftp, ssh, samba, etc.)

# apt-get install tftpd tftpd openssh-server samba nfs-user-server

3) make builder for arm

############################################################

## building u-boot (1.3.2)

1)

2)

3)

############################################################

## building linux kernel (2.6.25)

1) edit Makefile

ARCH ?= arm

CROSS_COMPILE ?= arm-linux-

2) patch

3) configure

$ make menuconfig

4) building

$ make uImage

############################################################

## using bootloader

1) download and write kernel in nand

tftpboot 0x32000000 uImage;

nand erase 0x000e4000 0x200000;

nand write 0x32000000 kernel $(filesize);

2) boot kernel from nand

setenv bootcmd 'nand read 0x32000000 kernel 0x200000; bootm 0x32000000'

3) rootfs from mtdblock

setenv bootargs noinitrd init=/linuxrc console=ttySAC0 root=/dev/mtdblock2

4) rootfs from nfs

setenv bootargs noinitrd init=/linuxrc console=ttySAC0 root=/dev/nfs rw nfsroot=192.168.2.200:/tftpboot/rootfs ip=192.168.2.100:192.168.2.200:192.168.2.111:255.255.255.0

5) rootfs from ramdisk

setenv bootargs noinitrd init=/linuxrc console=ttySAC0 root=/dev/ram rw

############################################################

## building busybox (1.12)

1) configure

$ make menuconfig

2) building

$ make clean

$ make CROSS_COMPILE=arm-linux- install

############################################################

## create a filesystem(rootfs)

0) before working

# mkdir /tftpboot/rootfs

# cd /tftpboot/rootfs

# mkdir dev bin sbin lib mnt usr proc home etc var

# cp -a busybox/_install/* .

@@copy other files to current dir@@

# cd -

1) create ramdisk

# dd if=/dev/zero of=ramdisk bs=1k count=16384;

# mke2fs ramdisk;

# mkdir /tmp/ramdisk;

# mount -o loop ramdisk /tmp/ramdisk;

# cp -a /tftpboot/rootfs/* /tmp/ramdisk;

# umount /tmp/ramdisk;

# rm -rf /tmp/ramdisk;

# gzip -9 ramdisk;

2) test ramdisk

# gunzip ramdisk.gz

# mount -o loop ramdisk /mnt

# ls -al /mnt

# umount /mnt

# gzip -9 ramdisk

3) create jffs2/jffs3

4) create yaffs



半年多来一直在忙着公司的路由器项目,说真的,在这项目中没有从中学到什么,用的都是一些旧东西,至少对我来说。在这半年多里又在计算机这块绕了一个圈,结果一事无成。最近想想,还是脚踏实地地进步,从半年前买的板子开始吧。

工作N多年了,懂的东西不少,可是忘记的东西也很多。作为开发人员如果没有自己的一套信息库那是不行,以前一直有构建自己的信息库,方便自己查询与及和他们共享、分享。慢慢来吧,首先从这篇开始,然后把相关的东西都放到新构建的svn库中,平时可以使用hg进行分布式整理。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

381

主题

382

帖子

1

粉丝