Linux移植之移植步骤

发布时间:2024-08-29  

在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤。移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序。移植的步骤如下:


1、将网上下载的内核源码文件linux-2.6.22.6.tar.bz2放入/work/system路径下。


2、切换到/work/system,使用tar xjf linux-2.6.22.6.tar.bz2解压缩内核源码文件得到一个名为linux-2.6.22.6的文件夹


3、cd linux-2.6.22.6切换到内核文件夹


4、修改顶层Makefile文件使得 ARCH ?= arm;CROSS_COMPILE  ?= arm-linux-


5、执行make s3c2410_defconfig修改内核配置,最终会生成一个.confg文件


6、执行make menuconfig配置内核,会读取.confg文件然后根据这个文件的基础上更改配置,这里配置先不用更改,直接退出


7、make uImage之后,将产生的uImage文件通过UBOOT的usb下载功能下载到指定地址,内核分区


8、在uboot界面执行boot启动内核,可以看到内核启动之后出现一片乱码


9、更改CPU的时钟晶振,找到 (archarmmach-s3c2440Mach-smdk2440.c)文件,将327行的s3c24xx_init_clocks函数里的16934400改为12000000,代表12M晶振


324        static void __init smdk2440_map_io(void)

325        {

326            s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

327            s3c24xx_init_clocks(12000000);//将16934400改为12000000

328            s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

329        }


10、将更改过的代码继续编译make uImage,重复第7步骤。


11、发现乱码消失了,但是还是不能启动位于nand flash上的第四分区的根文件系统


12、更改MTD分区,找到 (archarmplat-s3c24xxCommon-smdk.c)文件,将smdk_default_nand_part数组改为如下的形式,这表示将nandflash分为四个区:bootloader区、params区、kernel区、root区。


118    static struct mtd_partition smdk_default_nand_part[] = {

119        [0] = {

120            .name    = 'bootloader',

121            .size    = 0x00040000,

122            .offset    = 0,

123        },

124        [1] = {

125            .name    = 'params',

126            .offset = 0x00040000,

127            .size    = 0x00020000,

128        },

129        [2] = {

130            .name    = 'kernel',

131            .offset = 0x00060000,

132            .size    = 0x00200000,

133        },

134        [3] = {

135            .name    = 'root',

136            .offset    = 0x00260000,

137            .size    = 0x0fda0000,

138        }

139    };


13、将更改过的代码继续编译make uImage,重复第7步骤。


14、发现内核还是不能挂接根文件系统,出现No filesystem could mount root, tried:  ext3 ext2 cramfs msdos vfat romfs字样。


15、增加yaffs2文件系统支持nandfalsh


  a、从网上下载的yaffs_source.tar.gz放到/work/system目录下

  b、tar xzf yaffs_source.tar.gz解压得到Development目录下分别有yaffs2和yaffs两个文件夹,其中yaffs2是比较新的文件系统

  c、进入yaffs2文件夹后,./patch-ker.sh c /work/system/linux-2.6.22.6打补丁到内核所在目录


    上述命令完成以下三件事情


      1)、修改内核fs/Kconfig文件,增加source 'fs/yaffs2/Kconfig',表示读入fs/yaffs2/Kconfig这个Kconfig文件。


      2)、修改内核fs/Makefile文件,增加obj-$(CONFIG_YAFFS_FS) += yaffs2/,表示增加yaffs2/目录编译


      3)、将yaffs2源码目录下的Makefile.kernel文件复制为内核fs/yaffs2/Makefile


          将yaffs2源码目录下的Kconfig文件复制到内核fs/yaffs2/目录下


          将yaffs2源码目录下的*.c、*.h文件(不包括子目录下的文件)复制到内核fs/yaffs2/目录下

  d、make menuconfig配置内核支持yaffs2文件系统

    File systems

    Miscellaneous filesystems

    <*>YAFFS file system support


16、将更改过的代码继续编译make uImage,重复第7步骤。


17、发现内核可以启动位于root分区的根文件系统了,移植成功


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    系我们也可以通过CubeMX来快速生成和移植一个DFU功能程序到你的Flash中来使用。 DFU方案完整的组件包括单片机DFU Demo代码、PC端升级程序、PC端Demo代码以及相关资料手册等。通过......
    GUI 在 MINI2440 QEMU 的eCos 上的移植;经历了redboot, kernel测试,网卡驱动,web server的测试,很自然的我们想到了UI。 这不仅仅是移植一个GUI......
    的每个功能都有非常精确的表面光洁度。使用这样一把多功能刀具进行加工,可以省去五把刀具,效率大大提升。该刀具的第一个和第二个功能是用来粗加工,并在刀尖上安装了一个断屑器来断开切屑,从而提供更好的输出并避免障碍;第三个功能是插入以创建一个......
    如何才能移植一个AC6例子到STM32CubeIDE;本附录中使用的示例是DataLogTerminal,位于......
    驱动还是有很大的变化,那以后再来分析吧,现在还是分析这个,WINCE5.0下的。WINCE6.0的我还没有来得急移植呢。我一般喜欢动手自己移植一遍,这样能深入的了解WINCE的流程,同时对这颗IC......
    长度的char一个和2字节长度的short型数据一个,B也一样;按理说A,B大小应该都是7字节。 之所以出现上面的结果是因为编译器要对数据成员在空间上进行对齐。上面......
    移植openssh至嵌入式ARM开发板;CPU:AT91SAM9G20 Linux内核:2.6.30 板子拿到手其中的telnet服务不好用,所以就想着移植一个ssh的服务器上去。 2. 首先......
    s3c2440 gcc交叉编译工具链制作;前言: 因为准备学习lwip,之前在stm32上移植跟着教程走得差不多了,但是用的keil。所以想在一个新平台移植一下巩固巩固,正好有2440的板子,也学......
    主要是两点,一个是专注,小米的专注是在重点品类上只做一两个型号,聚焦把产品做到极致,这样研发和运作成本最低。 雷军提到的第二个成功因素就是利用互联网优势,而这能将市场、营销、渠道、店面......
    如果我们在使用产品的时候有特殊情况,比如需要发送特定的无线报文,或者设置不同的工作模式之类的操作,我们就可以通过按键操作进行一定的配置。 所以本文会移植一个按键驱动,能够支持按键 短按,固定时间的长按等操作,同时......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>