完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有一段时间没有继续做移植的工作了,今天接着继续。前面我们已经是把环境搭建好了,内核也打上了文件系统的补丁。但是现在我们先不做nand flash文件系统,而是使用NFS,这个可以方便我们后续驱动移植的调试。 废话不多说了,直接上菜 1. 修改Makefile vim Makefile 在ARCH ?= $(SUBARCH)后面增加 ARCH = ARM 保存退出vim 2. 拷贝板级文件 进入/arch/arm/mach-s3c64xx cp mach-mini6410.c mach-ok6410.c 编辑mach-ok6410.c Ø 把所有mini6410字样都替换为ok6410,注意是小写 Ø 把所有MINI6410字样都替换为OK6410,注意是大写 Ø 修改staticstruct mtd_partition ok6410_nand_part 112static struct mtd_partition ok6410_nand_part[] = { 113 #if 0 114 [0] = { 115 .name = "uboot", 116 .size = SZ_1M, 117 .offset = 0, 118 }, 119 [1] = { 120 .name = "kernel", 121 .size = SZ_2M, 122 .offset = SZ_1M, 123 }, 124 [2] = { 125 .name = "rootfs", 126 .size = MTDPART_SIZ_FULL, 127 .offset = SZ_1M + SZ_2M, 128 }, 129 #else 130 { 131 .name = "Bootloader", 132 .offset = 0, 133 .size = (1 * SZ_1M), 134 .mask_flags = MTD_CAP_NANDFLASH, 135 }, 136 137 { 138 .name = "Kernel", 139 .offset = (1 * SZ_1M), 140 .size = (5 * SZ_1M) , 141 .mask_flags = MTD_CAP_NANDFLASH, 142 }, 143 144 { 145 .name = "File System", 146 .offset = MTDPART_OFS_APPEND, 147 .size = MTDPART_SIZ_FULL, 148 } 149 #endif 150 }; 3. 修改Kconfig文件 在config MACH_REAL6410前插入 148config MACH_OK6410 149 bool "OK6410" 150 depends on ATAGS 151 select CPU_S3C6410 152 select S3C64XX_SETUP_FB_24BPP 153 select S3C64XX_SETUP_SDHCI 154 select S3C_DEV_FB 155 select S3C_DEV_HSMMC 156 select S3C_DEV_HSMMC1 157 select S3C_DEV_NAND 158 select S3C_DEV_USB_HOST 159 select SAMSUNG_DEV_ADC 160 select SAMSUNG_DEV_TS 161 help 162 Machine support for the ZHAN LEI OK6410 4. 修改Makefile文件 在obj-$(CONFIG_MACH_SMDK6410) += mach-smdk6410.o之后插入 obj-$(CONFIG_MACH_OK6410) += mach-ok6410.o 5. 修改arch/arm/tools/mach-types文件 cd ../tools/ 编辑mach-type,在smdk6410 MACH_SMDK6410 SMDK6410 1626之后插入 ok6410 MACH_OK6410 OK6410 1626 (这个必须和U-BOOT中的MACH-TYPE一致,用官方的UBOOT选用smdk6410的mach-type:1626) 6. 拷贝默认配置 cp arch/arm/configs/s3c6400_defconfig ./ cp s3c6400_defconfig .config 7. 内核配置 Ø 交叉编译器设置 General setup -> (arm-linux-gnueabi-)Cross-compiler tool prefix Ø 选择SystemType,取消SMDK6400 ,A&W6410,SMDK6410等平台,只选择OK6410 Ø 8. 配置网络驱动 DM9000的驱动在内核中已经实现了,所以不用自己重写 直接在内核裁剪的时候添加就好了,为了实现NFS挂载,这里连NFS配置也一起添加 Ø Networking support include这一项,并进入它的子目录 先进入Networking options ---> Include: l Packet socket l Unix domain sockets l UNIX: socket monitoring interface l TCP/IP networking l kernel level autoconfiguration l DHCP support l BOOTP support l RARP support Ø Device Drivers 进入它的子目录 再进图Memory Technology Device (MTD) support 再进入NAND Device Support excludes NAND Flash support for Samsung S3C SoCs 退回到Device Drivers下目录 include Network device support并进入 再进入Ethernet driver support (NEW) include DM9000 support (NEW),其他都是excludes Ø File systems 进入它的子目录 再进入Network File Systems (NEW) include: l NFS client support (NEW) l NFS client support for the NFSv3 ACL protocol extension l NFS client support for NFS version 4 l Provide swap over NFS support l NFS client support for NFSv4.1 l Root file system on NFS l NFS server support l NFS server support for NFS version 3 l NFS server support for the NFSv3 ACL protocol extension l NFS server support for NFS version 4 l NFS server manual fault injection 9. 编译内核 make zImage 10. 配置Busybox 下载busybox-1.24.2 进入菜单配置选项 Ø 设置字符范围以支持UTF8中文 Ø include Build shared libbusybox Ø arm-linux-gnueabi-作为交叉编译器前缀 Ø ../../../nfs/rootfs作为安装路径 具体如下: Busybox Settings ---> General Configuration ---> (178208) Range of supported Unicode characters BuildOptions ---> (arm-linux-gnueabi-) CrossCompiler prefix InstallationOptions ("make install" behavior) ---> (../../../nfs/rootfs)BusyBox installation prefix 11. 编译文件系统 make make install 12. 创建启动文件 rootfs目录下 Ø 创建make_rootfs.sh 内容如下: #!/bin/sh echo "--------Create root,dev......" mkdir root dev etc bin ***in mnt sys proc lib home tmp var usr mkdir usr/***in usr/bin usr/lib usr/modules usr/etc mkdir mnt/u*** mnt/nfs mnt/etc mnt/etc/init.d mkdir lib/modules chmod 1777 tmp sudo mknod -m 600 dev/console c 5 1 sudo mknod -m 666 dev/null c 1 3 echo "-------make direction done---------" Ø 创建etc/profile # Ashprofile # vim:syntax=sh # No corefiles by default ulimit -S-c 0 > /dev/null 2>&1 USER="`id-un`" LOGNAME=$USER #PS1='u@h:w#' PS1='[ 33[01;32m]u[ 33[00m]@[ 33[01;31m]h[ 33[00m]:[ 33[01;34m]w[ 33[00m]$' PATH=$PATH HOSTNAME=`/bin/hostname` exportUSER LOGNAME PS1 PATH Ø 创建etc/passwd root:x:0:0:root:/root:/bin/bash Ø 创建etc/group root:x:0: Ø 创建etc/fstab proc/proc proc defaults 0 0 none /tmpramfs defaults 0 0 none /varramfs defaults 0 0 mdev /devramfs defaults 0 0 sysfs/sys sysfs defaults 0 0 Ø 创建etc/inittab ::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount-a -r ::shutdown:/binumount -a –r ::shutdown:/***in/swapoff-a Ø 建立etc/mdev.conf空文件 Ø 建立etc/init.d/rcS #!/bin/sh PATH=/***in:/bin:/usr/***in:/usr/bin:/usr/local/bin: runlevel=S prevlevel=N umask 022 exportPATH runlevel prevlevel # # TrapCTRL-C &c only in this shell so we can interrupt subprocesses. # trap":" INT QUIT TSTP /bin/hostnameOK6410 /bin/mount-n -t proc none /proc /bin/mount-n -t sysfs none /sys /bin/mount-n -t u***fs none /proc/bus/u*** /bin/mount-t ramfs none /dev echo/***in/mdev > /proc/sys/kernel/hotplug /***in/mdev-s /bin/hotplug # mountingfile system specified in /etc/fstab mkdir -p/dev/pts mkdir -p/dev/shm /bin/mount-n -t devpts none /dev/pts -o mode=0622 /bin/mount-n -t tmpfs tmpfs /dev/shm /bin/mount-n -t ramfs none /tmp /bin/mount-n -t ramfs none /var mkdir -p/var/empty mkdir -p/var/log mkdir -p/var/lock mkdir -p/var/run mkdir -p/var/tmp /***in/hwclock-s -f /dev/rtc /***in/ifconfiglo 127.0.0.1 syslogd echo"*************************************" echo" Welcome to linux world" echo" LINUX FOR ARM" echo" Build by ZHAN LEI" echo"*************************************" echo `uname -a` echo"*************************************" > /dev/tty1 echo" Welcome to linux world" > /dev/tty1 echo" LINUX FOR ARM" > /dev/tty1 echo" Build by ZHAN LEI" > /dev/tty1 echo"*************************************" > /dev/tty1 echo `uname -a` > /dev/tty1 Ø 建立etc/ld.so.conf /lib Ø 生成连接库catch ldconfig -r ../rootfs Ø 拷贝动态库到lib下 sudo cp/usr/arm-linux-gnueabi/lib/*.so.* lib/ sudo cp/usr/arm-linux-gnueabi/lib/*.so lib/ 13. 烧写内核到nand flash 14. 设置uboot的启动参数 setenv bootargsnoinitrd "root=/dev/nfsip=192.168.2.107:192.168.2.106:192.168.2.1:255.255.255.0::eth0:offnfsroot=192.168.2.106:/home/zhanlei/nfs/rootfs,nolock,proto=tcpconsole=ttySAC0,115200" IP顺序如下: l 开发板IP l 宿主机IP l 网关 l 子网掩码 15. 重启板子即可在串口上看到shell环境了
|
|
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4880 浏览 0 评论
87375 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4700 浏览 2 评论
3590 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2465 浏览 0 评论
1976浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1339浏览 1评论
1246浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1315浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1221浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 19:03 , Processed in 0.909243 second(s), Total 44, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号