The Staff of Mage

----以此作为下次重装软件的SOP

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Barebox个人定制化的东西主要位于arch/arm/boards下,这次的目标是创建一个基于i.MX27的loader,板名命名为my27。

 

首先复制arch/arm/boards/pcm038到arch/arm/boards/my27,修改里面的文件名为my27.c和my27.dox ,修改里面的makefile。

 

在barebox目录下输入make menuconfig,导入pcm038_defconfig,另存为my27_defconfig。

 

修改arch/arm/Makefile, 加上board-$(CONFIG_MACH_MY27)      := my27

 

http://www.arm.linux.org.uk/developer/machines/?action=new注册一个新板子,一律输入my27,然后下载新的文件覆盖arch/arm/tools/mach-types。如果不想注册的话,就随便把里面的一个条目改成自己的就行了--如果不是公开发行的板子的话。该文件会在barebox编译的时候在include/generated生成一个头文件mach-types.h,包含了对MACH_MY27的声明,这个声明在arch/arm/mach-imx/Kconfig用到。

 

修改arch/arm/mach-imx/Kconfig,

    在config ARCH_TEXT_BASE中加入default 0xa0000000 if MACH_MY27

    在config BOARDINFO中加入default "My i.MX27" if MACH_MY27

    在if ARCH_IMX27的choice里加入

                config MACH_MY27
                    bool "My i.MX27"
                    select MACH_HAS_LOWLEVEL_INIT
                    select HAVE_MMU
                    help
                        Say Y here if you are using i.MX27 board equipped
                        with a Freescale i.MX27 Processor

   

修改arch/arm/boards/my27/env/config,把machine改成my27,eth0.serverip改成tftp服务器的地址,kernel_loc和rootfs_loc都改成nand,注释掉nor_part和rootfs_mtdblock_nor,把rootfs_mtdblock_nand改成3。

 

修改arch/arm/boards/my27下的lowlevel.c和my27.c,主要的不同有:

a)my27没有mc13783电源管理芯片,core给的电压是1.45V一步到位,因此不需对PLL做两个stage处理,在lowlevel.c的SDRAM初始化前直接设定到399MHz。PLL要使能FPM倍频,不然没法reset(reset后时钟来自32.768KHz晶振)。另注意在driver strength没设置之前不要用gpio,会死机。

b)在my27.c对GPIO做设定,lan8700,WM9712等做bootstrap。

c)在my27.c中新增一个mmc设备,enable SD io和clock,在config里增加对SD卡的支持(修改menuconfig),对于SD卡更新下次再开新篇。

d)在my27.c中注释掉cfi_dev和sram_dev

e)在my27.c中修改framebuffer device设定,在drivers/video/imx.c的imxfb_enable_controller和imxfb_disable_controller加入对lcd背光和vdd的处理。

f) 由于barebox的分区大小是256K,因此编译好的barebox.bin不能超过256,另外编辑config能脚本时注意可能会有换行符多出来,最好用vim来改。

 

运行make menuconfig,修改各项设定后保存退出,编译至调试通过。

posted on 2010-12-07 17:07  nus1998  阅读(727)  评论(0编辑  收藏  举报