×
单片机 > 单片机程序设计 > 详情

编译s3c2410的linux2.4.18内核

发布时间:2020-05-29 发布时间:
|

进入内核源码所在的路径/usr/src/linux-2.4中
   A)make mrproper      //清理内核源代码树,如果是第一次配置内核则可以不运行

                         //ls .config  //验证内核配置文件不存在
   B)make menuconfig    //配置内核以及内核模块,其实这里的还可以使用
                         //(1)make config(交互式问答)
                         //(2)cp /etc/config-2.4.20-8 .config(通过复制现有的配置文件而获取)

                         //(3)make oldconfig(通过旧内核生成)
                         //(4)make xconfig(图形界面下编译)
                         //如果要从图形界面定制内核,需要安装第三张光盘中的tk包。

                         //这里强烈推荐使用make menuconfig。
                         //在进入内核配置菜单之后:
                         //(1)[*]表示编译进入内核——随系统启动而启动
                         //(2)[  ]表示配置项不编译进内核
                         //(3)表示不编译进内核,作为内核模块进行编
                         //(4)< >不编译进内核也不作为内核模块进行编译                     
   C)make dep           //依赖性关系
   D)make bzImage       //编译内核核心
   E)make modules       //编译内核模块
   F)make install       //安装编译好的新内核核心,嵌入式这步省略
   G)make modules_install 

//安装内核模块(即便事实上什么也没有建构)。 这会把内核模块安装入 /lib/modules/ /kernel/drivers 目录( KERNELVERSION 是 Makefile 中指定的版本)。在这个例子里是 /lib/modules/2.4.20-2.47.1custom/kernel/drivers/;

嵌入式的话放在宿主机的tmp/lib/modules/</kernel/drivers下,确切位置最好看命令行的输出,开头有cp的行。

make mrproper后会彻底改变原来的配置,所以阳初提供的2410linux_src.tar.gz源码包

解压后直接make menuconfig,保存配置成一个配置文件,以后再编译内核时就可以make mrproper,make menuconfig调出第一次的配置,在此配置上修改。


在开发板上输入

#insmod ctrlboard.o
ctrlboard.o: unresolved symbol devfs_register
ctrlboard.o: unresolved symbol __wake_up
ctrlboard.o: unresolved symbol unregister_chrdev
ctrlboard.o: unresolved symbol register_chrdev
ctrlboard.o: unresolved symbol __arch_copy_to_user
ctrlboard.o: unresolved symbol free_irq
ctrlboard.o: unresolved symbol devfs_unregister
ctrlboard.o: unresolved symbol interruptible_sleep_on
ctrlboard.o: unresolved symbol set_external_irq
ctrlboard.o: unresolved symbol request_irq
ctrlboard.o: unresolved symbol __arch_copy_from_user
ctrlboard.o: unresolved symbol printk
ctrlboard.o: unresolved symbol udelay
出现上面错误的原因是编译内核的时候选择下面这一项,这项表示驱动程序版本跟内核版本不严格一样的话,insmod将找不到内核函数
Loadable module support -------->
[ ]set version information on all module symboles

启用设备文件系统devfs,在配置内核时选择

File systems--------------->

[]/dev file system support

#看内核导出符号
cat  /proc/ksyms

如果编译linux2.6.14.1内核,则是
make menuconfig
make zImage


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址