linux内核移植过程问题总结

移植内核:2.6.30.4 内核根目录下的.config为当前配置内核的且已经配置好的内核配置。make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/s3c2410_defconfig /linux-2.6.30.4(作为配置参考,考到根目录下) mv s3c2410_defconfig .config(改名为.config) make menuconfig ARCH=arm(ARCH=arm不能少) 配置过程 退出时记得选yes保存为.config(确保该配置是你已经配置且保存的配置,就算不改动也要保存。否则不能生成.config) make zImage ARCH=arm CROSS_COMPILE=arm-linux-(ARCH=arm不可少) 或者 Makefile中定于ARCH=arm CROSS_COMPILE=arm-linux- 1,make s3c2410_defconfig(生成.config) 2,make zImage 即可生成压缩内核印象 uboot引导内核,入口点必须为0x30008000 zImage:go 0x30008000 uImage:bootm 0x30008000 busybox下载地址: http://busybox.net/ linux快速修改文件夹及文件下所有文件与文件夹权限 chmod 777 * -R uboot的tftp下载出现如下错误: TFTP error: 'Permission denied' (0) 改正方法就是给待下载的文件加上可执行(chmod 777 文件)权限 uboot的使用:tftp下载内核,直接用交叉网线连接PC(实际上为虚拟机)和开发板即可 uboot启动之后,输入:printenv 查看 serverip是不是你的虚拟机的ip(终端ifconfig即可查看) ipaddr要和serverip在同一个网段,即ip的前三段必须相同 ethaddr:开发板dm9000的MAC物理地址 netmast:子网掩码:255.255.255.0 serverip,ipaddr,ethaddr,netmast不符合要求的话,可以使用命令设置:(示例) setenv serverip 169.254.209.223 setenv ipaddr 169.254.209.113 setenv netmast 255.255.255.0 setenv ethaddr 00:01:02:03:04:05 saveenv //设置完毕记得保存环境变量 uboot启动内核:uboot版本(2009.08) 条件:uboot的机器码和内核的机器码要一样 uboot部分修改: 机器码: #gedit board/samsung/my2440/my2440.c  gd->bd->bi_arch_number = MACH_TYPE_SMDK2440 内核部分:内核版本(2.6.30.4) #gedit arch/arm/mach-s3c2440/mach-smdk2440.c MACHINE_START(SMDK2440, "SMDK2440") #gedit arch/arm/kernel/head.S  //在ENTRY(stext)下添加如下代码 ENTRY(stext)     mov    r0, #0     mov    r1, #0x3f0   //上面的MACH_TYPE值1008换成十六进制就是0x3f0     ldr    r2, =0x30008000 内核中的nand分区一定要和bootloader中的一致: #gedit arch/arm/plat-s3c24xx/common-smdk.c          offsize       size uboot : 0x00000000    0x00030000 //192kb param : 0x00030000    0x00040000 //这个环境变量的地址范围配置的CONFIG_ENV_OFFSET一致 kernel: 0x00080000    0x00500000 //5mb root  : 0x00580000    0x0c800000  //200mb #gedit uboot/include/cofings/mini2440.h 查看:MTDPART_DEFAULT = " "   //默认分区 编译得到内核zImage uImage的制作: 先将u-boot下的tools中的mkimage复制到主机的/usr/local/bin目录下,执行以下命令: mkimage -n 'linux-2.6.30.4' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage.img uboot.bin拷贝到XP,用supervivi的a命令下载,开关拨到nand启动 uImage和根文件系统,考到tftp的收发文件夹,使用tftp服务传送 在u-boot命令行下输入:(自启动的将内核读入内存) set bootcmd 'nand read 0x30008000 内核偏移地址 内核区大小;bootm 0x30008000' saveenv   把uImage.img用tftp下载到内存中,然后再固化到Nand Flash中,操作和执行图如下: tftp 0x30008000 uImage.img  //将uImage.img下载到内存0x30008000处 nand erase 0x80000 0x500000 //擦除nand的kernel分区(officesize ,size) nand write 0x30008000 0x80000 0x500000 //将内存0x30008000处的内容写入到nand的kernel分区 重启开发板(reset命令),完成内核自启动 第一个分区(bootloader)对应mtdblock0 第二个分区(param参数)对应mtdblock1 第三个分区(kernel)对应mtdblock2 第四个分区(root根文件系统)对应mtdblock3 此处的命令参数取代内核配置的boot命令参数,不输入则默认内核的boot参数 内核自启动yaffs2文件系统: uboot命令行下输入: set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 mem=64M saveenv 把root-2.6.30.4.bin用tftp下载到内存中,然后再固化到Nand Flash中,操作和执行图如下: tftp 0x30008000 root-2.6.30.4.bin  //将root-2.6.30.4.bin下载到内存0x30008000处 nand erase 0x00580000  0x0c800000 //擦除nand处0x00380000大小0x0c800000的内容(文件系统分区) nand write.yaffs2 0x30008000 0x00580000 rootfs的大小 //将内存0x30008000处的内容写入到nand的0x00380000处 重启开发板(reset命令),完成内核自启动yaffs2文件系统 yaffs2文件系统制作注意: 制作好的文件系统要是2112的整数倍(128MB及以上的flash用mkyaffs2image-128M工具), 【528的整数倍(64M的flash用mkyaffs2image工具)】 否则tftp下载到nand的话,会提示attempt to write error length data的错误 [MY2440] # tftp 0x30008000 root-2.6.30.4.bin dm9000 i/o: 0x20000300, id: 0x90000a46  DM9000: running in 16 bit mode MAC: 08:00:3e:26:0a:5b operating at unknown: 0 mode Using dm9000 device TFTP from server 169.254.209.223; our IP address is 169.254.209.113 Filename 'root-2.6.30.4.bin'. Load address: 0x30008000 Loading: T T ###################################T #############T #################          ######################################T ###########################          #################################################################          #########################T T ########################################          #################################################################          #################################################################          ###################T ######################### done Bytes transferred = 6359232 (6108c0 hex) [MY2440] # nand erase 0x380000 0xc800000 NAND erase: device 0 offset 0x380000, size 0xc800000 Erasing at 0xc800000 -- 213254144% complete. OK [MY2440] # nand write.yaffs2 0x30008000 0x380000 0x6108c0 NAND write: device 0 offset 0x380000, size 0x6108c0 Skip the first good block 20000 Writing at 0x20000 --  6166528 bytes written: OK static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name  = "uboot", .size  = 0x00000000, .offset  = 0x00030000, //192KB }, [1] = { .name  = "param", .offset = 0x00030000, .size  = 0x00040000, //256KB }, [2] = { .name  = "kernel", .offset = 0x00080000, .size  = 0x00500000, //5MB }, [3] = { .name  = "root", .offset  = 0x00580000, .size  = 0x0c800000, //200MB } Wrong Image Format for bootm command  出错原因: 1) 未使用uboot中mkimage  工具制作uImage,却使用bootm 启动 2)   tftp 传送地址错误 3) nand write 格式和地址错误

4) nand read 格式和地址错误

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏知识分享

9-开发板接入小五物联实现远程控制(Wi-Fi模块)

这一节为教程最终版功能演示,现在不必深究,早晚自己全部都会实现的(静静的跟着我学哈)

2192
来自专栏我叫刘半仙

原荐记一次服务器被植入挖矿木马cpu飙升200%解决过程

线上服务器用的是某讯云的,欢快的完美运行着Tomcat,MySQL,MongoDB,ActiveMQ等程序。突然一则噩耗从前线传来:网站不能访问了。 此项目是我...

4874
来自专栏CSDN技术头条

资源控制在大数据和云计算平台中的应用

本文针对大数据平台中资源控制这个层面来详细介绍资源控制在不同操作系统上的具体技术实现,以及大数据平台和资源控制的集成。

6378
来自专栏安恒网络空间安全讲武堂

打个3dsctf,电脑机都开不了?

3DSCTF Malware 3道题 writeup tags: - Reverse - malware ---- 这个ctf有个Malware的题型,...

2649
来自专栏抠抠空间

rest_framework基础

1630
来自专栏草根专栏

使用Identity Server 4建立Authorization Server (1)

本文内容基本完全来自于Identity Server 4官方文档: https://identityserver4.readthedocs.io/ 官方文档很详...

52310
来自专栏信安之路

Red Team 工具集之攻击武器库

上图是一个 Red Team 攻击的生命周期,整个生命周期包括:信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上...

2220
来自专栏JadePeng的技术博客

K8S集群安装

主要参考 https://github.com/opsnull/follow-me-install-kubernetes-cluster

6542
来自专栏计算机编程

SNS项目笔记<四>--RXjs简要用法

在命令行输入ionic g provider youProviderName 在创建好后,系统会自动导入从@angular/http里导入Http这个类,方便后...

1474
来自专栏沃趣科技

ASM 翻译系列第三十六弹:ACFS磁盘组的重平衡操作

原作者:Bane Radulovic 译者: 魏兴华 审核: 魏兴华 DBGeeK社区联合出品 原文链接:http://asmsupportguy....

36711

扫码关注云+社区

领取腾讯云代金券