随笔分类 - 嵌入式linux学习笔记
构建根文件系统(7)制作/烧写yaffs映象文件
摘要:前面已经制作好工具mkyaffsimage,现在就可以使用它来制作根文件系统的映象文件,具体如下:1、huanghuang@huanghuang-desktop:/work/nfs_root$ mkyaffsimage fs_mini fs_mini.yaffsmkyaffsimage: image building tool for YAFFS built Dec 13 2009Processing directory fs_mini into image file fs_mini.yaffsObject 257, fs_mini/bin is a directoryObject 258,
阅读全文
构建根文件系统(6)修改制作yaffs映象文件的工具
摘要:1、mkyaffsimage工具只能生成老式的yaffs1映象文件,需要修改才能支持新格式。 yaffs1新、老格式的不同在于oob区的使用发生了变化:一是ECC检验码的位置发生了变化,二是可用空间即标记(tag)的数据结构定义发生了变化。2、huanghuang@huanghuang-desktop:/work/system/Development/yaffs2/utils$sudo vi mkyaffsimage.c 以下红色字为新增的。。#include <stdlib.h>#include <stdio.h>#include <fcntl.h>#in
阅读全文
构建根文件系统(5)构建dev目录
摘要:只讲使用mdev创建设备文件。。。。。1、mdev的用法可以参考busybox-1.9.2/docs/mdev.txt,它的两个用途:初始化/dev目录、动态更新。以下为摘取部分关于mdev的命令:Here's a typical code snippet from the init script:[1] mount -t sysfs sysfs /sys[2] echo /bin/mdev > /proc/sys/kernel/hotplug[3] mdev -sOf course, a more "full" setup would entail exec
阅读全文
构建根文件系统(4)构建etc目录
摘要:在etc目录下的内容主要取决于要运行的程序,这里只需要创建3个文件即可:etc/inittab、etc/init.d/rcS、etc/fstab。root@huanghuang-desktop:/work/nfs_root/fs_mini# mkdir etcroot@huanghuang-desktop:/work/nfs_root/fs_mini# lsbin etc lib linuxrc sbin usr1、仿照Busybox的examples/inittab,创建etc/inittabroot@huanghuang-desktop:/work/nfs_root/fs_mini# cd
阅读全文
构建根文件系统(3)编译、安装Busybox、安装glibc
摘要:1、从http://www.busybox.net/downloads/ 下载busybox-1.9.2.tar.bz22、tar xjf busybox-1.9.2.tar.bz23、配置Busyboxmake menuconfig根据不同需要在配置时选上,退出、保存配置。4、修改Makefile,使用交叉编译器ARCH ?= armCROSS_COMPILE ?= arm-linux-5、编译Busyboxmake6、安装Busyboxmake CONFIG_PREFIX=/work/nfs_root/fs_mini install在work/nfs_root/下面自动生成fs_mini目
阅读全文
构建根文件系统(2)Busybox init 进程
摘要:讲init进程的启动过程从/etc/inittab出发。内核启动init进程时已经打开/dev/console设备作为控制台,一般情况下Busybox init程序就使用/dev/console,如果内核启动init进程的同时设置了环境变量CONSOLE或console,则使用环境变量所指定的设备。1、/etc/inittab文件的相关文档和示例代码都在Busybox 的examples/inittab文件中。vi examples/inittab内容如下(红色字为格式重要部分):# /etc/inittab init(8) configuration for BusyBox## Copyri
阅读全文
构建根文件系统(1)Linux root filesystem目录结构
摘要:详细可见FHS文档,可从网站:http://www.pathname.com/fhs/ 下载/____/bin____/sbin____/dev____/etc____/lib____/home____/root____/usr____/var____/proc____/mnt____/tmp各个目录的作用如下:1、/bin存放所有用户都能使用的基本命令,如下:2、/sbin存放只有管理员才能使用的命令,例如:shutdown、reboot、fdisk、fsck等。3、/dev存放设备文件/dev/mtdblock1 可以访问MTD设备的第2个分区设备文件有两种:字符设备(c)和块设备(b..
阅读全文
内核移植(4)移植yaffs文件系统
摘要:yaffs这种文件系统专门为NAND Flash设计的嵌入式文件系统,虽减少了一些功能,但比JFFS速度更快,占用内存更少。一般而言,在Nor Flash上使用JFFS2文件系统,在NAND Flash上使用YAFFS文件系统。我在JFFS2与YAFFS的性能比较表格上看到,YAFFS适用的操作系统很多,容易移植。(1) 将yaffs2代码加入内核通过yaffs目录下的脚本文件patch-ker.sh 来给内核打补丁,操作如下:cd /work/system/Development/yaffs2./patch-ker.sh c /work/linux-2.6.22.6(2) 配置、编译内核m.
阅读全文
内核移植(3)修改MTD分区
摘要:修改MTD分区,在arch/arm/plat-s3c24xx/common-smdk.c修改:static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "Boot Agent", .size = SZ_16K, .offset = 0, }, [1] = { .name = "S3C2410 flash partition 1", .offset = 0, .size = SZ_2M, }, [2] = { .name = "S3C2410 flash pa
阅读全文
内核移植(2)arch/arm/mach-s3c2440/mach-smdk2440.c
摘要:对于s3c2410、s3c2440开发板,它们的CPU Id都是0x41129200,在arch/arm/mm/proc -arm920.S中的_ _arm920_proc_info结构中。 定义开发板参数在arch/arm/mach-s3c2440/mach-smdk2440.c中,如机器类型ID、起始I/O物理地址、Bootloader传入的参数的地址、中断初始化函数等。 arch/arm/kernel/head.S是内核执行的第一个文件。 S3c2440开发板上启动uImage时串口输出乱码的原因,开发板晶振的频率设置有问题。1、在arch/arm/mach-s3c2440/mach-s
阅读全文
内核移植(1)首次生成uImage映象文件
摘要:1、先修改顶层Makefile,如下:ARCH ?= $ (SUBARCH)CROSS_COMPILE ?=改为:ARCH ?= armCROSS_COMPILE ?= arm-linux-2、执行make s3c2410_defconfig3、make uImage,首次编译完内核用了4分钟,尾部出现如下信息: LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImage"mkimag
阅读全文
U-Boot移植(19)新移植到ylp2410上u-boot的功能
摘要:新u-boot-1.1.6-new的功能:1、同时支持S3C2410和S3C24402、支持串口xmodem协议3、支持USB下载,可以在PC上使用dnw传数据4、支持网卡芯片dm9000aep5、支持NAND Flash读写6、支持从Nor/Nand Flash启动7、支持烧写yaffs文件系统映象8、可以直接下载到内存运行9、支持CFI、Jedec接口的Nor Flash10、把环境参数保存在nand flash中11、u-boot把分区设为:define MTDPARTS_DEFAULT "mtdparts=nandflash0:256k@0(bootloader),"
阅读全文
U-Boot移植(18)网卡dm9000aep移植总结
摘要:总结: 主要修改三个文件: 1、/u-boot-1.1.6/include/configs/100ask24x0.h 2、/u-boot-1.1.6/board/100ask24x0/lowlevel_init.S 3、/u-boot-1.1.6/drivers/dm9000x.c 补充:4、/u-boot-1.1.6/drivers/dm9000x.h 把移植好的u-boot-1.1.6重新打成压缩包,便于收藏。 如下: tar cjf u-boot-1.1.6-new.tar.bz2 u-boot-1.1.6
阅读全文
U-Boot移植(17)ylp2410网卡dm9000aep
摘要:3、在板里,为了验证现在新u-boot 是否可用需要先在u-boot 中设置ip地址,如下所示:注意下面红色字U-Boot 1.1.6 (Dec 5 2009 - 17:41:27)DRAM: 64 MBFlash: 0 kBNAND: 64 MiBIn: serialOut: serialErr: serialUPLLVal [M:28h,P:1h,S:2h]MPLLVal [M:5ch,P:4h,S:0h]CLKDIVN:3h+---------------------------------------------+| S3C2440A USB Downloader ver R0.03
阅读全文
U-Boot移植(16)ylp2410网卡dm9000aep
摘要:这几天真被dm9000aep折磨的受不了,在今晚12.5终于宣告对它的完美征服,回顾这几天的历程,真是一波三折。1、首先我要说的是dm9000aep和dm9000是不一样的,虽是同一个公司的网卡,但是前者是后者的升级版,如果直接把u-boot下的网卡那部分程序拿来用,最终烧到优龙板里后在u-boot下是实现不了tftp的,因为之前我已经在pc机上搭建成功tftp平台了。 注意下面的红体字 一开始我真的以为dm9000aep和dm9000是一样的,所以其它部分移植成功后,就把u-boot直接烧到板里,结果出现如下错误:OpenJTAG> ping 172.22.136.38ERROR: r
阅读全文
redhat下搭建交叉编译环境一个问题
摘要:昨晚帮同学在redhat下搭建交叉编译环境的时候,解决了一个问题,觉的这个问题还是有一点意义的,现在将它记录下来。1、开始进入root下面,把交叉编译压缩包复制到tmp下面,然后解压。。命令这里就不说这个了。2、解压之后我们可以找到交叉编译的工具在/tmp/usr/...../bin 下面。在bin下面我们可以看到一系列的arm-linux-开头的编译工具3、这时我们要设置路径,使编译时自已能调用编译工具。4、我们使用如下命令: vi /root/.bashrc 进入里面之后在底端增加一行:export PATH=$PATH:/tmp/usr/...../bin :wq 保存退出之后,再启动
阅读全文
U-Boot移植(15)TFTP installation and setting(tftp-hpa and tftpd-hpa)
摘要:Today i installed and set the tftp,because i may use this tool to download your kernel and filesystem image to my target board. process:sudo -i 1、Install tftpd and related packages. # apt-get install xinetd tftpd-hpa tftp-hpa2、modify etc/default/tftpd-hpa#Defaults for tftpd-hpa RUN_DAEMON="yes&
阅读全文
U-Boot移植(14)解决saveenv不能保存环境变量
摘要:1、没修改之前,u-boot.bin烧入板中,在dnw终端显示操作如下:U-Boot 1.1.6 (Nov 25 2009 - 22:15:51)DRAM: 64 MB Flash: 1 MB NAND: 64 MiB *** Warning - bad CRC, using default environmentIn: serial Out: serial Err: serial UPLLVal [M:28h,P:1h,S:2h] MPLLVal [M:5ch,P:4h,S:0h] CLKDIVN:3h+--------------------------------------------
阅读全文
U-Boot移植(13)Warning - bad CRC or NAND, using default environment
摘要:接上面(5)在串口终端出现如下:U-Boot 1.1.6 (Nov 25 2009 - 22:15:51)DRAM: 64 MB Flash: 1 MB NAND: 64 MiB *** Warning - bad CRC, using default environment还存在警告,这个警告不是错误,而是新的环境变量起作用,只要在OPENJTAG<下输入saveenv就能保存新的环境变量,reset之后就可以看到Warning消失了。。。但是我在下面输入saveenv、reset之后还存在警告。。。网友henry.li说:估计是你的环境变量保存的位置不正确,环境变量实际上没有保存。
阅读全文
U-Boot移植(11)u-boot的重要细节
摘要:主要分析流程中各函数的功能。按启动顺序罗列一下启动函数执行细节。按照函数start_armboot流程进行分析: 1)DECLARE_GLOBAL_DATA_PTR; 这个宏定义在include/global_data.h中: #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8") 声明一个寄存器变量 gd 占用r8。这个宏在所有需要引用全局数据指针gd_t *gd的源码中都有申明。 这个申明也避免编译器把r8分配给其它的变量. 所以gd就是r8,这个指针变量不占用内存。 2)gd = (g
阅读全文