XC2440开发板编写BSP文件

来源:互联网 发布:土猫宠物淘宝怎么样 编辑:程序博客网 时间:2024/06/03 12:34

转自:http://blog.chinaunix.net/uid-22030783-id-3019567.html

第一节,准备移植,针对XC2440开发板编写BSP文件

获得内核源码:

       Linux-2.6.37.4.tar.bz2(在光盘资料/源码包/kernel源码目录下)

      也可到官方网站HHHHHHHHHHHHHHHHUUUUTUTUTUTUTUTUTUTUTUTUTUhttp://www.kernel.org/UUUUUUUUUUUUUUUTTTTTTTTTTTHHHHHHHHHHHHHHHH获得最新版本的内核源码


解压源码,进入目录:

       #tar  xjvf  linux-2.6.37.4.tar.bz2

       #cd  linux-2.6.37.4      

       

    由于我们没有使用root用户登录ubuntu系统,刚解压出的文件夹和文件还没有可写权限,我们要给源码目录加上所有权限,以方便后面的修改操作:

      #sudo  chmod  777  linux-2.6.37.4  -R

    参数-R表示递归地改变每个子目录下文件的权限

96B

修改 Makefile文件  191行:

97BARCH= arm                      ß指定系统硬件架构

98BCROSS_COMPILE ?= arm-linux-       ß指定交叉编译器


99B创建XC2440的初始化文件

100B仿照arch/arm/mach-s3c2440/mach-smdk2440.c,在arch/arm/mach-s3c2440目录下编写针对XC2440开发板的初始化文件,取名为:mach-xc2440.c(可以直接复制mach-smdk2440.c文件,只保留其中的头文件)

 

101B主要代码如下:

  1. static struct map_desc xc2440_iodesc[] __initdata = {
  2.     /* No use*/
  3. };

  4. static struct s3c2410_uartcfg xc2440_uartcfgs[] __initdata = {
  5.     [0]= {
  6.         .hwport     = 0,
  7.         .flags     = 0,
  8.         .ucon     = 0x3c5,
  9.         .ulcon     = 0x03,
  10.         .ufcon     = 0x51,
  11.     },
  12.     [1]= {
  13.         .hwport     = 1,
  14.         .flags     = 0,
  15.         .ucon     = 0x3c5,
  16.         .ulcon     = 0x03,
  17.         .ufcon     = 0x51,
  18.     },
  19.     [2]= {
  20.         .hwport     = 2,
  21.         .flags     = 0,
  22.         .ucon     = 0x3c5,
  23.         .ulcon     = 0x03,
  24.         .ufcon     = 0x51,
  25.     }
  26. };

  27. static struct platform_device *xc2440_devices[] __initdata = {

  28. };

  29. static void __init xc2440_machine_init(void)
  30. {
  31.   platform_add_devices(xc2440_devices, ARRAY_SIZE(xc2440_devices));
  32. }

  33. static void __init xc2440_map_io(void)
  34. {
  35.     s3c24xx_init_io(xc2440_iodesc, ARRAY_SIZE(xc2440_iodesc));
  36.     s3c24xx_init_clocks(12000000);
  37.     s3c24xx_init_uarts(xc2440_uartcfgs, ARRAY_SIZE(xc2440_uartcfgs));
  38. }

  39. MACHINE_START(XC2440,"XC2440")
  40.     .boot_params    = S3C2410_SDRAM_PA+ 0x100,
  41.     .init_irq    = s3c24xx_init_irq,
  42.     .map_io        = xc2440_map_io,
  43.     .init_machine    = xc2440_machine_init,
  44.     .timer        =&s3c24xx_timer,
  45. MACHINE_END

147B

修改同目录(arch/arm/mach-s3c2440/)下的KconfigMakefile文件,加入对xc2440开发板的支持

 

148BKconfig文件的最后面加入

  1. config MACH_XC2440
  2.        bool "XC2440 development board with S3C2440 CPU module "
  3.        select CPU_S3C2440
  4.        select S3C_DEV_NAND
  5.        help
  6.               Say Y here if you are using the XC2440 development board.
  7. endmenu

149B

156BMakefile文件中加入

  1. obj-$(CONFIG_MACH_XC2440)+= mach-xc2440.o


158B修改机器码(这个要和bootloader的匹配):

159B找到s3c2440的机器码,在s3c2440      ARCH_S3C2440           S3C2440           362

161B最后面的数字362就是机器码,xc2440uboot中的机器码也是362

162B但是这个机器码对应的machineS3C2440,而我们的machineXC2440

163B因为mach-xc2440.c中定义了MACHINE_START(XC2440, "XC2440")

164B379行用#注释掉,在下面加一行:

  1. #s3c2440 ARCH_S3C2440 S3C2440 362

  2. xc2440 MACH_XC2440 XC2440 362


167B配置内核

168B#make  menuconfig    ß进入图形化配置界面

ubuntu10.10中没有这个库,那我们就手动下载这个库:#sudo  apt-get  install  libncurses5-dev

等待安装完这个库后,再执行 

169B在配置菜单中选择这一项:Load an Alternate Configuration File”

 

170B输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig

171B然后选择OK,按回车

 

172B进入System Type”选项单,里面的选项保持默认

S3C2440”中的“XC2440”,完整配置如下:

 

176B让内核支持EABI编译器

.config,无需手动保存

退出配置,弹出窗口,提示是否要保存配置,选择 

185BzImage镜像烧进NandFlashkernel分区中跑一下,看终端是否正常打印出信息并正常引导操作系统

186B如果第一步能正常引导内核,那就开始进行第二步,添加驱动


0 0
原创粉丝点击