给OK6410配置新内核

发布时间:2024-09-03  

  由于学校的校园网服务器比较旧,开发板无法直接使用DHCP。


  所以有两种解决思路:


  1、在接入开发板之前,先接入一个交换机,接出来的接口再接开发板。


  2、可能由于开发板内核版本旧导致的驱动版本比较旧(因为开发板OK6410买来的时候,配给的是3.01,而12.04版本的ubuntu的内核版本是3.2,在接入时,PC是可以适配这个校园网并获得ip),所以现在进行对开发板内核进行更新,目标版本3.6.3。


  过程参考:http://blog.csdn.net/lwfbibi/article/details/7471877


  步骤一:解压


# tar xvf linux-3.6.3.tar.bz2

  步骤二:制作OK6410的拷贝


  1、以mini6410的文件为模板


  文件目录:/arch/arm/mach-s3c64xx/


# cp mach-mini6410.c mach-ok6410.c

  2、替换文件内容


# vim mach-ok6410.c

  进入底行模式


:%s/mini6410/ok6410/g

:%s/MINI6410/OK6410/g

:wq

  3、修改struct mtd_partition结构为


struct mtd_partition ok6410_nand_part[] = {

        {

                .name           = 'Bootloader',

                .offset         = 0,

                .size           = (1 * SZ_1M),

                .mask_flags     = MTD_CAP_NANDFLASH,

        },

        {

                .name           = 'Kernel',

                .offset         = (1 * SZ_1M),

                .size           = (5*SZ_1M) ,

                .mask_flags     = MTD_CAP_NANDFLASH,

        },

        {

                .name           = 'File System',

                .offset         = MTDPART_OFS_APPEND,

                .size           = MTDPART_SIZ_FULL,

        }

};


  步骤三:修改Kconfig、Makefile与mach-types


  1、/linux-3.6.3/arch/arm/mach-s3c64xx/Kconfig


  复制一段SMDK6410的配置项


  然后将副本的config MACH_SMDK6410中的 “SMDK” 更改为 “OK”


  2、/linux-3.6.3/Makefile


  更新为


  ARCH  ?= arm


  CROSS_COMPILE  ?= arm-linux-


  还有/linux-3.6.3/arch/arm/mach-s3c64xx/Makefile添加一行


  obj-$(CONFIG_MACH_OK6410)         += mach-ok6410.o


  3、arch/arm/tools/mach-types


  添加一行:


  ok6410 MACH_OK6410 OK6410 1626


  这里的类型号,要和uboot中的类型号对应


//uboot中的类型号定义地址在/include/configs/smdk6410.h

#define  MACH_TYPE    1626

#define  UBOOT_MAGIC   (0x43090000 | MACH_TYPE)    

 

  步骤四: 配置config


  1、在linux-3.6.3根目录下make menuconfig


  (此处可以先将飞凌的3.0.1中的.config复制到这边根目录下,然后load一下再进行配置,如果曾自己编译过一次linux-3.0.1)


  2、因为用的是旧版本的.config,接着直接就make zImage了


  内核编译过程中出现如下错误(1): 


drivers/base/power/domain.c: In function '__pm_genpd_add_device':

drivers/base/power/domain.c:1312: error: implicit declaration of function 'genpd_acquire_lock'

drivers/base/power/domain.c:1356: error: implicit declaration of function 'genpd_release_lock'

drivers/base/power/domain.c: In function 'pm_genpd_add_subdomain':

drivers/base/power/domain.c:1545: error: implicit declaration of function 'genpd_sd_counter_inc'

drivers/base/power/domain.c: In function 'pm_genpd_remove_subdomain':

drivers/base/power/domain.c:1588: error: implicit declaration of function 'genpd_sd_counter_dec'

drivers/base/power/domain.c: In function 'genpd_attach_cpuidle':

drivers/base/power/domain.c:1745: error: implicit declaration of function 'genpd_recalc_cpu_exit_latency'

make[3]: *** [drivers/base/power/domain.o] 错误 1

make[2]: *** [drivers/base/power] 错误 2

make[1]: *** [drivers/base] 错误 2

make: *** [drivers] 错误 2


  具体解决方法参详 http://comments.gmane.org/gmane.linux.kernel.samsung-soc/10344


  不得不再次赞叹,内核社区的牛人们…


   不过趁编译内核的空当,自己还是记录一下吧。


  修改两个文件:


   arch/arm/mach-exynos/Kconfig 


   arch/arm/mach-s3c64xx/Kconfig 


 


  1、 arch/arm/mach-exynos/Kconfig


  修改下面的内容


config CPU_EXYNOS4210

     select ARM_CPU_SUSPEND if PM

     select S5P_PM if PM

     select S5P_SLEEP if PM

-    select PM_GENERIC_DOMAINS

+    select PM_GENERIC_DOMAINS if PM

     help

       Enable EXYNOS4210 CPU support


  2、arch/arm/mach-s3c64xx/Kconfig


  修改下面的内容


config PLAT_S3C64XX

     bool

     depends on ARCH_S3C64XX

     select SAMSUNG_WAKEMASK

-    select PM_GENERIC_DOMAINS

+    select PM_GENERIC_DOMAINS if PM

     default y

     help

       Base platform code for any Samsung S3C64XX device


  错误(2):


make[1]: *** 没有规则可以创建“firmware/sd8686_helper.bin.gen.o”需要的目标“firmware/sd8686_helper.bin”。 停止。

make[1]: *** 没有规则可以创建“firmware/sd8686.bin.gen.o”需要的目标“firmware/sd8686.bin”。 停止。 

  具体参详:http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=11518


  据飞凌官方人员透露,他们对配发的linux-3.0.1版本的内核进行了大量的改动。所以这里可以进入linux-3.6.3的firmware文件夹看到


  并没有依赖文件sd8686_helper.bin和sd8686.bin文件


  我的做法是直接将飞凌的sd8686.bin 和 sd8686_helper.bin 复制到当前内核的fireware目录下,然后继续编译。


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

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

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

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

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

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

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

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