上海英文网站建设公司,雅诗兰黛网络营销策划书,js开发手机app,网站开发的一次性收益前一阵子已经将U-boot移植好了#xff0c;从今天开始#xff0c;我们开始移植linux内核。移植的内核为3.4.2#xff0c;移植的开发板为#xff1a;jz2440开发板。 想看之前移植U-boot的记录#xff0c;可以查看我的博客专栏#xff0c;点击链接#xff1a;点击查看U-bo…前一阵子已经将U-boot移植好了从今天开始我们开始移植linux内核。移植的内核为3.4.2移植的开发板为jz2440开发板。 想看之前移植U-boot的记录可以查看我的博客专栏点击链接点击查看U-boot移植教程
首先我们从官网下载3.4.2内核先解压内核拿到Lniux服务器 tar xjf linux-3.4.2.tar.bz2 cd linux-3.4.2/
然后修改Makefile选择默认配置 vi Makefile 找到下面这句话
ARCH ? $(SUBARCH)
CROSS_COMPILE ? $(CONFIG_CROSS_COMPILE:%%)
改为
ARCH ? arm
CROSS_COMPILE ? arm-linux-
这里需要注意一点交叉编译工具我这里用的是4.3.2有的交叉编译工具编译不通过。 然后选择默认配置 make s3c2410_defconfig 然后 make uImage 显示编译成功 然后将生成的映像文件拷贝到服务器的文件系统目录这一步不是必须的可以根据自己的实际情况将映像文件烧写到开发板 cp arch/arm/boot/uImage /work/nfs_root/uImage_new
然后将其烧写到开发板这里就是在uboot启动界面输入命令了烧写方法不唯一我这里是用的nfs协议直接从服务器上下载内核映像文件 nfs 32000000 192.168.1.101:/work/nfs_root/uImage_new 显示如下 注 我在一开始用nfs挂载内核的的时候出现如下错误T T * ERROR: Cannot umount。 解决办法要在主机的/etc/hosts文件中加入: 开发板ip nfs目录我的是/work/nfs_root 例如192.168.1.103 /work/nfs_root/ bootm 32000000 串口显示乱码。很显然虽然我们的内核已经启动但是串口的设置肯定没有设置好。
通过分析uboot源码知获取及其ID的方法为从环境变量中获取或者使用默认的ID uboot的默认MACH ID gd-bd-bi_arch_number MACH_TYPE_SMDK2410; // 193 如果s getenv(“machid”);成功则使用它 否则使用默认的
我们先自己在环境变量中设置 在UBOOT里 set machid 16a // smdk2440 mach-smdk2440.c 或 set machid 7CF // mini2440 mach-mini2440.c 这个设置我测试了一下不设置也可以启动内核
还需要更改一下环境变量 set bootargs consolettySAC0,115200 rootdev/mtdblock3 还有一个地方需要修改如果我们使用的是 smdk2440的话需要将arch\arm\mach-s3c24xx\mach-smdk2440.c中的
s3c24xx_init_clocks(16934400);
改为
s3c24xx_init_clocks(12000000);
然后重新编译内核挂载内核 nfs 32000000 192.168.1.101:/work/nfs_root/uImage_new bootm 32000000
终于我们的打印的是正常的字符了但是内核还没有真正启动还是有一些错误今天就不写了放到下一篇文章中继续解决。
想一起探讨以及获得各种学习资源加我有我博客中写的代码的原稿 qq1126137994 微信liu1126137994 可以共同交流关于嵌入式操作系统C语言C语言数据结构等技术问题。