linux系统构建基础学习笔记——操作

linux系统构建

********************************************************
                 
---交叉编译环境构建---

安装arm-linux-gcc-4.3.2 (交叉编译器)

tar xzvf arm-linux-gcc-4.3.2.tgz -C /
cd
/usr/local/arm/4.3.2/bin
./arm-linux-gcc
-v
在/etc/bashrc文件的最后添加如下一行:
   export
PATH=/usr/local/arm/4.3.2/bin:$PATH
source /etc/bashrc
echo
$PATH
arm-linux-gcc test.c -o test_arm
file test_arm

mini2440模拟器的安装:qemu

如果你的系统中没有zlib,先安装zlib-1.2.7.tar.gz
cp zlib-1.2.7.tar.gz /opt
tar xzvf
zlib-1.2.7.tar.gz
cd zlib-1.2.7
 ./configure
--prefix=/usr
make
make install

安装qemu:
cp mini2440-HEAD1.tar.gz /opt
tar xzvf
mini2440-HEAD1.tar.gz
cd mini2440
./configure
--target-list=arm-softmmu,arm-linux-user --disable-gfx-check
--disable-sdl
make
make install
qemu-arm -L
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/ ~/test_arm

tftp安装
rpm -ivh xinetd-2.3.14-18.fc9.i386.rpm
rpm -ivh
tftp-server-0.48-3.fc9.i386.rpm
rpm -ivh tftp-0.48-3.fc9.i386.rpm
rpm
-qa | grep tftp
 tftp-0.48-3.fc9
 
 tftp-server-0.48-3.fc9
修改配置文件:/etc/xinetd.d/tftp
 server_args =
-s /mnt/hgfs/LinuxShared/mytftp -c
 disable  = no

/etc/init.d/xinetd start

连接:ftp 192.168.1.230

解压安装构建源代码和应用程序
mkdir -p /opt/FriendlyARM/mini2440

将所有资源拷贝到/mnt/hgfs/LinuxShared/mini2440soft目录。

进入linux的/opt/FriendlyARM/mini2440目录下:

解压启动引导程序源代码
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/vboot-src-20100106.tar.gz
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/bootloader.tgz
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/tekkamanninja-U-boot-2009.11_tekkaman- 16deca6.tar

解压linux内核源代码:
  tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/linux-2.6.32.2-mini2440-20100113.tgz
 

解压文件系统工具源代码busybox
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/busybox-1.13.3-mini2440.tgz

解压目标文件系统源代码
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/root_qtopia-20100108.tar.gz

解压qt工具源代码
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/x86-qtopia-20100108.tar.gz
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/arm-qtopia-20100108.tar.gz

解压测试实例程序源代码
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/examples-20100108.tar.gz

安装目标文件系统映象制作工具mkyaffs2image
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/mkyaffs2image.tgz -C
/
usr/sbin/mkyaffs2image
usr/sbin/mkyaffs2image-128M

安装logo制作工具LogoMaker
tar xzvf
/mnt/hgfs/LinuxShared/mini2440soft/logomaker.tgz -C /
usr/sbin/logomaker

解压安装完成以后,在linux下就准备了进行linux定制所需要的所有的源代码
arm-qtopia 
busybox-1.13.3 
linux-2.6.32.2            
vboot
bootloader  examples       
root_qtopia(有不一样)     x86-qtopia

安装配置nfs服务器
设置共享目录,在/etc/exports文件中加入如下一行:
/opt/FriendlyARM/mini2440/root_qtopia
*(rw,sync,no_root_squash)
*: 
所有客户机都可以挂接此目录
rw:挂接此目录的客户机对该目录有读写权限。
no_root_squash:允许挂接此目录的客户机享有该主机的root身份

关闭防火墙:
service iptables status
service iptables stop

启动nfs服务:
/etc/init.d/nfs start
/etc/init.d/nfs restart

测试:
在本机上挂载nfs
[[email protected] sysconfig]# mount -t nfs
127.0.0.1:/opt/FriendlyARM/mini2440/root_qtopia /mnt
[[email protected]
sysconfig]# ls /mnt
bin  etc  
lib      mnt  proc  sbin  tmp 
var
dev  home  linuxrc  opt  root  sys  
usr 
www
可以看到/mnt目录下的内容和/opt/FriendlyARM/mini2440/root_qtopia/目录下的内容完全一致

用开发板测试:
1.Nand Flashi启动,开机时按k1-k6任意按键进入vivi交互命令模式
2.Nor
Flash启动,进入Suppervivi主功能菜单模式,输入q,进入Suppervivi交互命令模式,输入:
Supervivi> param
set linux_cmd_line "console=ttySAC0 root=/dev/nfs
nfsroot=192.168.1.188:/opt/FriendlyARM/mini2440/root_qtopia
ip=192.168.1.230:192.168.1.188:192.168.1.188:255.255.255.0:sbc2440.arm9.net:eth0:off"

param :参数
set
linux_cmd_line:设置linux启动时的命令参数
      console=ttySAC0
:使用控制字符终端ttySAC0
     
nfsroot:开发主机的ip+共享的启动文件系统目录
 ip=目标板的ip+开发主机的ip+目标板上网关+子网掩码+开发主机名字+网卡名字

输入boot启动系统。

********************************************************
                   
---U-boot定制---

已经移植好的MINI2440的UBOOT软件包:
tekkamanninja-U-boot-2009.11_tekkaman-16deca6.tar.gz

使用步骤:
cp
/mnt/hgfs/LinuxShared/tekkamanninja-U-boot-2009.11_tekkaman-16deca6.tar.gz 
/opt
tar -xzvf tekkamanninja-U-boot-2009.11_tekkaman-16deca6.tar.gz
mv
tekkamanninja-U-boot-2009.11_tekkaman-16deca6.tar.gz  
tekkamanninja-U-boot-2009.11
修改顶层Makefile文件
#CROSS_COMPILE =
arm-tekkaman-linux-gnueabi-
CROSS_COMPILE = arm-linux-
在顶层:
make
mini2440_config
make
生成uboot.bin文件
下载:1.NorFlash启动,Supervivi引导,选择【a】下载到NandFlash中(而【d】只下载到内存中)
 2.NandFlash启动。。。(按CTRL+C进入shell状态)

在u-boot中建立自己的设备:
   1.建文件夹
cd 
/opt/FriendlyARM/mini2440 /tekkamanninja-U-boot-2009.11
cd
board/samsung/
mkdir my2440
2.拷贝资源
cp -rf ../tekkamanninja/mini2440/*
my2440/
3.修改资源中的.c文件名
mv mini2440.c my2440.c
4.复制.h头文件,并改为自己的名字
cd
../../../
#cp    include/configs/mini2440.h   
include/configs/my2440.h

5.修改my2440下的Makefile:
  # COBJS :=
nand_read.o mini2440.o  flash.o
  COBJS := nand_read.o
my2440.o  flash.o

6.修改顶层的Makefile:
  
增加:
    
my2440_config : unconfig
   @$(MKCONFIG) $(@:_config=)
arm arm920t my2440 samsung s3c24x0

arm: CPU的架构(ARCH)

 arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。
 my2440:
开发板的型号(BOARD),对应于board/my2440目录。可以依自己的喜好修改
 samsung: 开发者/或经销商(vender)。
my2440的父目录,可以写成NULL
         s3c24x0:
片上系统(SOC)。
 
   7.在顶层下,编译生成u-boot.bin文件:
  
(在之前需要先编译一下mini2440_config,在tekkaman/mini2440/生成一些.o文件)
   make
my2440_config
   make

修改u-boot源代码,是得生成的u-boot适应于自己的开发板。
 

         
1.修改cpu/arm920t/start.S
     cd
/opt/FriendlyARM/mini2440/tekkamanninja-U-boot/cpu/arm920t
         
gedit
start.S
 修改该文件,在启动的时候增加自己开发板对led的控制
 /*
 @ bl coloured_LED_init
 @ bl red_LED_on
 */
 ...
 增加自己的代码
 ...

使用Supervivi下载时已经对CPU和RAM进行了初始化
 如果将u-boot下载到NandFlash中并直接从NandFlash中启动(【a】下载),应该有cpu初始化。
 此时注释,运行时能看到前面的代码修改后的效果,但不能继续启动。
 #ifndef
CONFIG_SKIP_LOWLEVEL_INIT
  //bl cpu_init_crit
 #endif

2.修改:lib_arm/board.c
 
 #if
defined(CONFIG_MINI2440_LED)  
  //gpio->GPBDAT = 0x0;
//tekkamanninja
 #endif

重新编译下载执行

********************************************************
               
---Linux内核配置与编译---

1.*清理:
 make clean:清除产生的文件,保留配置文件
 make
mrproper:清除所有产生文件和配置文件
 make
distclean:mrproper+清除备份和补丁
2.配置:(用来生成.config文件编译方案)
(在做好了的内核目录中,有config_mini2440_x35,直接复制成.config即可)
make
config:交互式配置
make oldconfig:是有已有配置文件(.config)
make xconfig :图形化配置
make
menuconfig:菜单型配置
[] 单选,按空格选择
<> 三选,按y,m,n或空格选择
-*
-必选
h为帮助,ESC返回上层菜单

3.编译内核:
make zImage:压缩的vmlinux
make uImage :U-boot用
make modules

定制自己的linux系统:

一、搭建环境

1.修改根目录下下Makefile文件:
   export KBUILD_BUILDHOST :=
$(SUBARCH)
  # 指定内核运行的平台环境和交叉编译器
  ARCH  ?=
arm
  CROSS_COMPILE ?= arm-linux-

2.执行mini2440默认配置,使得.config按照默认设置配置。
 make mini2440_defconfig

3.编译一下,看是否有问题
make

4.删除arch/arm/mach-s3c2440/mini2440.c ,拷贝mach-smdk2440.c
 mv
mini2440.c mini2440.c.bak
 cp arch/arm/mach-s3c240/mach-smdk2440.c 
mach-mini2440

5.修改mini2440.c:
   gedit
mini2440.c
 1.修改开发板信息:
  MACHINE_START(MINI2440, "mini2440
liaoyi")

2.修改系统时钟
  s3c24xx_init_clocks(12000000);

3.将代码中的所有的smdk2440全部替换为mini2440

4.注释掉
  //smdk_machine_init();  //smdk的初始化

6.在make menuconfig中显示:
  gedit 
arch/arm/mach-s3c2440/Kconfig
    config
MACH_MINI2440
 bool "Mini2440 Liaoyi"
 select
CPU_S3C2440
 select S3C2440_XTAL_12000000
 select
S3C_DEV_USB_HOST
 select S3C_DEV_NAND
 help
 meke
menuconfig->General setup->s3c2440 Machines -> MINI2440 development
board
 *修改的内容在开发板中加载系统以后,使用cat /proc/cpuinfo可以在hardware项下看到

7.将mini2440.c生成的mini2440.o实际编译进内核
   gedit
arch/arm/mach-s3c2440/Makefie
      
obj-$(CONFIG_MACH_MINI2440) += mach-mini2440.o

8.再次make mini2440_defconfig -> make 看修改是否有问题。

二、定义系统硬件资源驱动部分

1.新增Nandflash
  //新增nandflash分区信息
   static struct
mtd_partition friendly_arm_default_nand_part[] = {
 [0] =
{
  .name = "supervivi",   
//定义一个系统启动代码分区
  .size = 0x00040000,    
//分区大小256K
  .offset = 0,
 },
 [1] =
{
  .name = "param",       
//启动代码参数分区
  .offset = 0x00040000,  
//参数分区紧跟在启动分区的后面
  .size = 0x00020000,    
//参数分区的大小为128K
 },
 [2] = {
  .name =
"Kernel",       //内核分区
  .offset =
0x00060000,   //紧跟在参数分区的后面
  .size =
0x00500000,    
//大小5M,在当前NANDFLASH下
 },
 [3] = {
  .name =
"root",        
//根文件系统
  .offset = 0x00560000,
  .size = 1024 *
1024 * 1024, //1G,实际有多大是有具体的nandflash芯片来确定的
 },
 [4] =
{
  .name = "nand",
  .offset =
0x00000000,   
//整个nandflash大小为1G,所以使用本分区表能够管理的最大的                           
       nandflash就是1G
  .size =
1024 * 1024 * 1024, //1G
 }
   };

static struct s3c2410_nand_set friendly_arm_nand_sets[] = {
 [0] =
{
  .name  = "NAND",
  .nr_chips =
1,
  .nr_partitions =
ARRAY_SIZE(friendly_arm_default_nand_part),
  .partitions =
friendly_arm_default_nand_part,
 },
};

/* choose a set of timings which should suit most 512Mbit
 * chips
and beyond.
*/

static struct s3c2410_platform_nand friendly_arm_nand_info =
{
 .tacls  = 20,
 .twrph0  =
60,
 .twrph1  = 20,
 .nr_sets =
ARRAY_SIZE(friendly_arm_nand_sets),
 .sets  =
friendly_arm_nand_sets,
 .ignore_unset_ecc = 1,
};

//把nand flash设备注册到系统中
static struct platform_device *mini2440_devices[]
__initdata =
{
 &s3c_device_usb,
 &s3c_device_lcd,
 &s3c_device_wdt,
 &s3c_device_i2c0,
 &s3c_device_iis,
 &s3c_device_nand, 
//新增加一行对nandflash的支持
};

2.移植yaffs2文件系统
如果内核代码中没有yaffs2
cd yaffs2
./patch-ker.sh c
/opt/FriendlyARM/mini2440/linux-2.6.32.2
cd  
linux-2.6.32.2/fs  多了一个yaffs2目录

make menuconfig
    File System ->Miscellaneous
filesystems ->yaffs2

make zImage
下载:
supervivi 
‘k‘
           ‘y‘

********************************************************
                 
---文件系统定制---

文件系统的定制

文件系统的构建所需文件:
busyBox:集成压缩了许多linux工具和命令。
root_qtopia:提供了文件系统所需的库文件。
Mkyaffs2image:yaffs文件系统制作工具(解压在usr/bin中)(在yaffs2中也有)。

1.创建自己定制的文件系统的目录结构
  创建顶层目录
   mkdir
studyarm
   cd studyarm
   mkdir root bin sbin dev etc
boot tmp var usr sys proc lib mnt home

创建子目录
  mkdir etc/init.d  etc/rc.d 
etc/sysconfig
  mkdir usr/sbin usr/bin usr/lib usr/modules
 
mkdir var/lib var/lock var/run var/tmp
 
  创建设备文件
 
mknod -m 600 dev/console c 5 1
  mknod -m 600 dev/null c 1 3
 
ls dev
     console  null

修改var和var/tmp的目录属性
  chmod 1777 tmp
  chmod 1777
var/tmp
 
2.完成库文件的定制
  切换到mini2440资源目录,对根文件系统代码进行解压

  cd  root_qtopia
  cp -rfd  lib/*
/opt/studyarm/lib/

3.编译配置busuybox
  cd busybox-1.13.3

修改Makefile文件
   # 修改交叉编译工具
   CROSS_COMPILE
?=arm-linux-

# ARCH ?= $(SUBARCH)
   ARCH ?=arm

修改config文件
  cp fa.config .config
  make
menuconfig
  make
  make CONFIG_PREFIX=/opt/studyarm
install
  busybox的相关命令工具会自动安装到studyarm下的/bin,/sbin,/usr/bin里面。
 
完成上述操作以后,自己定制的文件系统中的命令(/bin, /sbin, /usr/bin, /usr/sbin目录下的命令)都准备好了

4.文件系统中配置文件的制作
  拷贝几个主机的配置文件作为定制系统的配置文件
  cd etc
  cp
/etc/passwd ./
  cp /etc/shadow ./
  cp /etc/group ./
 
touch mdev.conf
  ls
  group  init.d  mdev.conf 
passwd  rc.d  shadow  sysconfig
 
 
编写下面的配置文件
  touch sysconfig/HOSTNAME
  gedit
sysconfig/HOSTNAME
  在文件中加入主机名

etc/inittab 文件
  ::sysinit:/etc/init.d/rcS
 
console::askfirst:-/bin/sh
  ::ctrlaltdel:/sbin/reboot
 
::shutdown:/bin/umount -a -r

实现/etc/init.d/rcS
  cp /mnt/hgfs/LinuxShared/RCS 
etc/init.d/rcS

实现fstab
  gedit fstab
  内容如下
 
#device mount-point   type  option   dump fsck
order
  proc /proc proc default 0 0
 
none /tmp ramfs default 0 0
 
sysfs /sys sysfs default 0 0
 
mdev /dev ramfs default 0 0

实现etc/profile文件
  内容如下
  #A sh profile

USER=“filesystest"
  LOGNAME=$USER
 
PS1=‘[\[email protected]\h\W]\$‘
  PATH=$PATH
 
HOSTNAME=‘/bin/hostname‘
  export USER LOGNAME PS1 PATH

5.制作文件系统映像
 
  mkyaffs2image-128M rootfs
rootfs.img
 
注意:要在rootfs的上一层目录中操作,另外rootfs中要删除不必要的文件root_qtopia等,不然生成的文件 
系统会很大。
  生成的img就是可以下载到开发板上的文件系统的映像
  ll rootfs.img
 
-rw------- 1 root root 5964288 09-16 17:11 rootfs.img

********************************************************
                 
---系统综合---
Supervivi的使用:

[x] format NAND FLASH for Linux
[v] Download
vivi                          
USB下载Supervivi到NandFlash的vivi区
[k] Download linux
kernel             
USB下载系统内核到NandFlash的kernel区
[y] Download root_yaffs
image     USB下载yaffs文件系统到NandFlash的root区
[a] Absolute
User Application       
USB下载u-boot到NandFlash的vivi区
[n] Download Nboot for WinCE
[l] Download
WinCE boot-logo
[w] Download WinCE NK.bin
[d] Download &
Run                      
USB下载至内存(option中指定地址)并启动(裸机驱动中使用过)
[z] Download zImage into RAM
[g] Boot
linux from RAM
[f] Format the nand flash
[b] Boot the
system                        
启动系统(根据启动参数启动)
[s] Set the boot
parameters           
设置启动参数->子菜单
[u] Backup NAND Flash to HOST through USB(upload)
[r]
Restore NAND Flash from HOST through USB
[q] Goto shell of
vivi                          
进入vivi的shell命令交互模式(按menu返回主功能菜单模式)
[i] Version: 1138-2K

NOR
Flash启动,只能是Supervivi引导,此时能用dnw或超级终端或securecRT的串口进行通信和(启动,格   式化等)操作,也可以设置用网线来nfs网络文件系统来启动。
   注意:dnw在系统启动后进入shell的操作时乱码,而超级终端和secureCRT正常。
   启动系统后还可以用串口,用网线(tftp,nfs)进行传输文件
   但是如果要下载,只能用dnw的USB下载到NandFlash或内存(d)。

NandFlsh启动,在Supervivi引导下输入q进入shell命令模式,可用secureCRT(网络)加载NFS网络文件系统
   
正常启动linux后,可通过超级终端(串口)或secureCRT(串口)/secureCRT(网线)传输文件  (tftp,NFS)
            

  
如果是u-boot引导加载,用网络(nfs或tftp)可加载主机的kernel或文件系统到内存启动,也  可以直接写到NandFlash中。

按光盘中的默认映像文件下载

NorFlash启动,Supervivi引导,用dnw,通过USB下载到NandFlash

1.下载文件系统(v):supervivi-128M

2.下载内核(k):zImage_X35

3.下载图形文件系统(y):rootfs_qtopia_qt4.img

用Supervivi下的b(boot)命令启动,第一次要屏幕校准。

启动linux后,实现主机与开发板的文件传输:

方式一:通过串口
 接收文件:rz
 发送文件:sz
  [[email protected] /]#
rz
  在菜单中选择window下的一个文件
  成功后,在根目录下会出现该文件。
 
[[email protected] /]# sz hj.sh

方式二:通过网络(tftp)
  用ftp-server在window下共享一个目录。设置好用户和密码。
  Kernel
2.6.32.2-FriendlyARM on (/dev/pts/0)
  FriendlyARM login: root
 
[[email protected] /]# ls
  [[email protected] /]# ftp
192.168.1.10
  Connected to 192.168.1.10.
  220 Serv-U FTP
Server v6.1 for WinSock ready...
  Name (192.168.1.10:root):
liao
  331 User name okay, need password.
  Password:
 
230 User logged in, proceed.
  Remote system type is UNIX.
 
Using binary mode to transfer files.
  ftp> ls
  ftp> get
xiangtangprsget.c
  local: xiangtangprsget.c remote:
xiangtangprsget.c
  200 PORT Command successful.
  150 Opening
BINARY mode data connection for xiangtangprsget.c (6608 Bytes).
  226
Transfer complete.
  6608 bytes received in 0.0213 secs (3e+02
Kbytes/sec)
  ftp> bye
  221 Goodbye!
 
[[email protected] /]# ls
  addressbook.txt   
linuxrc           
sbin
 
bin               
lost+found         sys
 
dev               
mnt               
tmp
 
etc               
opt               
usr
 
hj.sh             
proc              
var
 
home              
rcs               
www
 
lib               
root              
xiangtangprsget.c

Supervivi下,启动nfs网络文件系统:
1.主机linux安装配置nfs(前面有介绍)
2.主机linux下启动nfs服务
 
[[email protected] root_qtopia]# /etc/init.d/nfs start

3.主机的ip地址和开发板配置在相同的网段,并保证两者之间的网络能够直接连通(把虚拟机的网络连接方式设置为桥接)
 
[[email protected] root_qtopia]# ifconfig eth4 192.168.1.188 netmask
255.255.255.0
  [[email protected] root_qtopia]# ping
192.168.1.230
4.开发板启动进入suppervivi命令提示符下
 
在Supervivi模式下输入如下命令
  Supervivi> param set linux_cmd_line
"console=ttySAC0 root=/dev/nfs
nfsroot=192.168.1.188:/opt/FriendlyARM/mini2440/root_qtopia
ip=192.168.1.230:192.168.1.188:192.168.1.1:255.255.255.0:mini2440.arm9.net:eth0:off"
 
其中 ,param set linux_cmd_line 是设置启动 linux 时的命令参数。其各参数的含义  如下:
 
nfsroot 是自己开发主机的IP 地址。
  “ip=”后面:
 
第一项(192.168.1.230)是目标板的临时IP(注意不要和局域网内其他IP 冲突);
 
第二项(192.168.1.112)是开发主机的IP;
  第三项(192.168.1.1)是目标板上网关(GW)的设置;
 
第四项(255.255.255.0)是子网掩码;
  第五项是开发主机的名字(一般无关紧要,可随便填写)
  eth0
是网卡设备的名称--开发板的网卡。

Supervivi> boot

注意:启动的是我们虚拟机中linux系统下的nfs共享目录下的文件系统

U-boot的使用:
 
将自己定制的uboot下载到开发板上--将开发板启动方式设置为nor启动,输入a,下载uboot,再将开发板的  
启动方式设置为nand,启动系统,按CTL+C进入uboot
  [[email protected]]# printenv
 
bootargs=noinitrd root=/dev/nfs rw
nfsroot=192.168.0.1:/home/tekkaman/working/nfs/rootfs
ip=192.168.0.2:192.168.0.1::255.255.255.0 console=ttySAC0,115200 init=/linuxrc
mem=64M
  bootcmd=nfs 0x30008000
192.168.0.1:/home/tekkaman/working/nfs/zImage.img;bootm
 
bootdelay=1
  baudrate=115200
 
ethaddr=08:08:11:18:12:27
  ipaddr=192.168.0.2
 
serverip=192.168.0.1
  gatewayip=192.168.0.1
 
netmask=255.255.255.0
  tekkaman=bmp d 70000
 
stdin=serial
  stderr=serial
  ethact=dm9000

环境变量的设置
  [[email protected]]# setenv ipaddr
192.168.1.230
  [[email protected]]# printenv
bootargs=noinitrd
root=/dev/nfs rw nfsroot=192.168.0.1:/home/tekkaman/working/nfs/rootfs
ip=192.168.0.2:192.168.0.1::255.255.255.0 console=ttySAC0,115200 init=/linuxrc
mem=64M
bootcmd=nfs 0x30008000
192.168.0.1:/home/tekkaman/working/nfs/zImage.img;bootm
bootdelay=1
baudrate=115200
ethaddr=08:08:11:18:12:27
serverip=192.168.0.1
gatewayip=192.168.0.1
netmask=255.255.255.0
tekkaman=bmp
d
70000
 stdin=serial
stdout=serial
stderr=serial
ethact=dm9000
ipaddr=192.168.1.230

Environment size: 472/131068 bytes
[[email protected]]# setenv serverip
192.168.1.10
[[email protected]]# printenv
bootargs=noinitrd root=/dev/nfs
rw nfsroot=192.168.0.1:/home/tekkaman/working/nfs/rootfs
ip=192.168.0.2:192.168.0.1::255.255.255.0 console=ttySAC0,115200 init=/linuxrc
mem=64M
bootcmd=nfs 0x30008000
192.168.0.1:/home/tekkaman/working/nfs/zImage.img;bootm
bootdelay=1
baudrate=115200
ethaddr=08:08:11:18:12:27
gatewayip=192.168.0.1
netmask=255.255.255.0
tekkaman=bmp
d
70000
 stdin=serial
stdout=serial
stderr=serial
ethact=dm9000
ipaddr=192.168.1.230
serverip=192.168.1.10

Environment size: 473/131068 bytes

环境变量设置完成只是当次有效,如果需要永久有效,需要使用saveenv命令来保存对于环境变量的设置进入nandflash中
[[email protected]]#
saveenv
Saving Environment to NAND...
Erasing Nand...
Erasing at
0x6000000000002 --   0% complete.
Writing to Nand... done

[[email protected]]# ping 192.168.1.10
dm9000 i/o: 0x20000300, id:
0x90000a46
DM9000: running in 16 bit mode
MAC:
08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000
device
host 192.168.1.10 is alive

uboot引导系统内核
1.制作uboot引导的内核映像文件uImage
  mkimage –n ‘newer’ –A
arm –O linux –T kernel –C none –a 0x30008000 –e 0x30008040  –d zImage
uImage
  -n 指定映像的名字 -- newer
  -A 指定平台体系结构 -- arm
  -O
指定操作系统的类型 -- linux
  -T 指定映像类型  -- kernel
  -C 指定压缩方式
--none -- 不压缩
  -a 指定映像在内存中的位置 -- 最后下载到系统中的位置
  -e 指定映像的运行入口地址
-- 下载地址加64字节
  -d 指定制作映像的源文件
  mkimage -n ‘testimage‘ -A arm -O
linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage_T35
myuImage
 
  先将uboot下tools目录中的mkimage拷贝到系统目录
 
[[email protected] tools]# cp mkimage /bin
  [[email protected] tools]# cd
/opt/FriendlyARM/mini2440/root_qtopia/
  [[email protected] root_qtopia]#
mkimage -n ‘testimage‘ -A arm -O linux -T kernel -C none -a 0x30008000 -e
0x30008040 -d zImage_T35 myuImage
  Image Name:  
testimage
  Created:      Wed Sep 18 11:08:38
2013
  Image Type:   ARM Linux Kernel Image
(uncompressed)
  Data Size:    2517028 Bytes = 2458.04 kB
= 2.40 MB
  Load Address: 30008000
  Entry Point: 
30008040
  [[email protected] root_qtopia]# ls
  bin  
linuxrc   root       
tmp         zImage_T35
 
dev   mnt       rootfs.img 
u-boot.bin
  etc   myuImage 
sbin        usr
  home 
opt      
sys         var
 
lib   proc     
test        www
 
*也可以直接在内核源代码目录下使用make uImage命令直接生成uImage文件

2.通过nfs下载内核映像到内存并运行
  # nfs 30008000
192.168.1.188:/opt/FriendlyARM/mini2440/root_qtopia
/myuImage
  #
bootm 30008000
  也可以使用nfs下载内核到内存,保存到nandflash中
  # nfs 30008000
192.168.1.188:/opt/FriendlyARM/mini2440/root_qtopia
/myuImage
  #
nand erase 0x80000 0x300000
  # nand write 0x30008000 0x80000
0x300000
  # nand read 0x30008000 0x80000 0x300000
  # bootm
0x30008000
  通过上述命令已经将内核映像下载到nandflash中,以后每一次运行uboot以后都可以通过nand
read将nandflash中的内核读入到内存中,然后使用bootm来加载内核系统

3.uboot烧入文件系统
  setenv bootargs noinitrd
root=/dev/mtdblock3 rootfstype=yaffs2 rw console=ttySAC0,115200 init=/linuxrc
mem=64M

通过uboot使用nfs引导主机上的内核和文件系统
  设置uboot的命令
 
[[email protected]]# setenv bootcmd nfs 0x30008000
192.168.1.188:/opt/FriendlyARM/mini2440/root_qtopia
/myuImage\; bootm
0x30008000
  [[email protected]]# setenv bootargs noinitrd root=/dev/nfs
rw nfsroot =192.168.1.188:/opt/FriendlyARM/mini2440/root_qtopia
ip=192.168.1.230:192.168.1.188:192.168.1.1:255.255.255.0 console=ttySAC0,115200
init=/linuxrc mem=64M
  [[email protected]]# boot

移植QT到目标板
 添加触摸屏支持库
 tar jxf tslib-1.4.tar.bz2
 cd
tslib
 
 ./autogen.sh
 ./configure
--prefix=/usr/local/arm/qte/tslib

          --host=arm-linux

         
ac_cv_func_malloc_0_nonnull=yes
 
 make
 make
install

移植QT到目标板
 tar zxf
qt-everywhere-opensource-src-4.6.2.tar.gz
 cd
qt-everywhere-opensource-src-4.6.2

配置QT
 ./configure -prefix /usr/local/arm/qte/4.6.2
\
     -no-qt3support  \
  
  -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg \
  
  -no-openssl -no-cups -no-iconv -embedded arm \
  
  -xplatform qws/linux-arm-g++  \
  
  -qt-mouse-tslib -little-endian \
  
  -I/usr/local/arm/qte/tslib/include \
  
  -L/usr/local/arm/qte/tslib/lib \
     -nomake
examples -nomake demos

编译QT
 make

安装QT
 make install

设置开发库路径
   PATH=/usr/local/arm/qte/4.6.2/bin:$PATH

进行交叉编译
 qmake -project
 qmake
 make

-------------------------------------------------------------------------------
注意:
export
QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0",在移植的所有工作都完成以后,发现LCD屏上的字体非常小。把其中的数字值都改为其一半的时候,屏上的字体就比较大了。

1. 复制/usr/local/arm/qte/tslib 到 开发板的 /usr/qte下

2. 把/usr/local/arm/qte/4.6.2/lib下对应的LibQtGui.*,  libQtCore.*
libQtNetwork.*, libQtsql.*  打包,
然后到开发板根文件系统 /usr/qte/lib下解包

3.  /usr/local/arm/qte/4.6.2/lib/下的 fonts目录也要复制到开发板根文件系统
/usr/qte/lib里

4.然后

#   修改 rootfs/etc/profile ,

添加环境变量
#   export TSLIB_ROOT=/usr/qte/tslib
#  
export QTEDIR=/usr/qte/4.6.2
#   export
TSLIB_CONSOLEDEVICE=none
#   export
TSLIB_FBDEVICE=/dev/fb0
#   export
TSLIB_TSDEVICE=/dev/input/event0
#   export
TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal
#   export
TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
#   export
TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
#   export
QWS_MOUSE_PROTO=tslib:/dev/input/event0
#   export
LD_LIBRARY_PATH=TSLIB_ROOT/lib
#   export
POINTERCAL_FILE=$TSLIB_ROOT/etc/pointercal
#   export
LIBRARY_PATH=$TSLIB_ROOT/lib:$QTEDIR/lib:$LD_LIBRARY_PATH

5 你把开发板中/usr/qte/tslib/etc/ts.conf

# Uncomment if you wish to use the
linux input layer event interface
   module_raw
input
中module_raw input前面的空格去掉就可以了。

6.运行/Tslib/bin/ts_calibrate获得校准文件/etc/pointercal
7.运行/Tslib/bin/ts_test
测试触摸屏
至此 Tslib可以测试通过。

8.运行 qttest -qws

linux系统构建基础学习笔记——操作

时间: 2024-10-17 08:06:33

linux系统构建基础学习笔记——操作的相关文章

linux系统驱动基础学习笔记

Linux驱动: 角色:应用程序 API      操作系统      驱动       实际硬件 功能:1.对设备进行初始化和释放2.把数据从内核传送到硬件和从硬件读取数据3.检测和处理设备出现的错误 Linux驱动程序类型:字符设备:由文件系统管理    (通过设备文件访问)块设备:由文件系统管理网络设备:由协议栈管理      (通过socket访问) 查看系统设备文件ls -l /devcat /proc/devicescat /sys/power/state 属性:文件类型   主设备

linux基础学习笔记——操作大全

作者:liaoyi 更新时间:2014-6-2 ****************基本操作***************** 关机 shutdown -h now    root用户               init 0              root用户halt      root+一般用户poweroff 重启shutdown -r now    root用户init6     root用户reboot            root+一般用户 注意:1.shutdown 比较灵活,可

linux应用编程基础学习笔记

********************************************************            --文件I/O-- 文件:文本文件:存储量大,速度慢,便于字符操作二进制文件:存储量小,速度快,便于存放中间结果 普通文件:设备文件: ---C标准函数---:Buffered I/O,高级文件系统,在用户空间开辟缓冲区,流操作(stream)#include<stdio.h> typedef struct{ int _fd;      //文件号 int _

Linux shell脚本-基础学习笔记

Linux脚本能力不是太强,最近再补习下,毕竟linux shell在日常工作中还是很普遍的, 用起来更方便.省时省力. 以下是学习笔记,偏理论,后面有几个例子,供参考. shell脚本组成元素系统命令.文本处理工具(grep\sed等).变量.条件判断.循环结构和函数 -------------------------------------------- 三剑客:grep,sed,awk,还有wc,sort,head等 ------------------------------------

linux系统构建学习笔记

嵌入式系统构架:(硬件+软件)应用软件层: Application GNU C Library(glibc)文件系统: 系统层: API(Systern Call Interface) OS Core + Power Mannager+ File Manager + GUI Mannager TCP/IP HTTP WAP DataBase Browser DDI(Device Drver Interface) 板级支持:BSP:Board Support Package       OEM A

鸟哥的Linux私房菜——基础学习篇 —— 笔记2

at 语法 == 注意,输入at之后便进入命令行模式 ------- 不管怎么样,只会执行一次. [test @test test]# at [-m] TIME (输入工作指令)[test @test test]# atq (查看当前工作流程)[test @test test]# atrm [jobnumber] (删除流程) -m :执行at规范的工作流程时,将屏幕输出结果mail给输入指令的用户TIME :时间格式,有如下几个: ================== 格式有多种,但没有可以间

c/c++unix/linux基础学习笔记-常用命令和vi的使用

linux 基本命令的使用-命令在ubuntu下面执行,有些命令通用其他linux,有些不通用. 多条命令间用;号隔开,回车后可以一起执行. clear-前屏,pwd显示当前目录,cd跳转目录. sudo [命令]  -ubuntu 下以管理员身份运行命令. 一般情况下,运行当前目录下的程序,要用 ./文件名 执行. 查看当前shell名称:ps 进入另外一个shell,直接输入shell名称:ksh/tcsh/sh/bash,退出一个shell用:exit. 切换shell命令,如:exec

HTML&CSS基础学习笔记6-文本操作标签

文本也许是HTML里最常见的元素了,所以我们有必要对HTML的文本操作标签做下认识. 1. <em>,<i>内的文字呈现为倾斜效果: 2. <strong>,<b>内的文字呈现为加粗效果: 3. <b>,<i>只是单纯的为了让文本具有某种特殊样式,而<strong>,<em>不仅带有特殊样式,而且也表达了某种语义: 4. 在单纯的为了达到某种样式的情况下,建议使用不带有语义的标签. 体验如下:http://ww

Linux学习之六-Linux系统的基础优化

Linux系统的基础优化 何谓'优化'.顾名思义,优化就是采取某些措施使某个东西或者某事物变得更加优异,出色.对于Linux而言,在初期安装好系统之后,也需要对其进行一定的基础优化,可分为安全上的优化,性能上的优化,安装常用软件包等. 1.selinux的优化 查看selinux状态getenforce 临时关闭setenforce 0 永久关闭selinux 需修改相应配置文件vi /etc/selinux/config 或者利用Linux命令中的sed替换 sed -i 's#SELINUX