2013年9月8日 星期日

kernel 3.2.50 on i.MX35

1. 這篇是筆記文, 備份用+自爽用, 所以不具參考價值.
2. 這篇重點在講 cross kernel build. 所以 BSP 支援的怎樣那我不管...
3. 我不保證其它平臺這樣 cross-compile 可以用, 最少我 Marvell 88F6281 就沒成功過.

拿 kernel source 前先弄到 toolchain, toolchain 就很多來源了, 所以不討論. 拿到 3.2.50 解開後, 因為我是要 build 到 i.mx35, 它是 ARM, 所以先來這裡看:
find arch/arm/configs/ |grep "mx"
arch/arm/configs/imx_v4_v5_defconfig
arch/arm/configs/mx3_defconfig
arch/arm/configs/mx5_defconfig
arch/arm/configs/mxs_defconfig

好吧, 精簡成這樣. 我要的是 mx35, 所以是 mx3_defconfig.
make ARCH=arm CROSS_COMPILE=${請自行代入 tool-chain 的東西} mx3_defconfig
可以先看到一些 kernel.org 預設的一些選項, 在這建議加上幾個 framebuffer 用的東西:

Device Drivers->Character devices->
[*] Virtual terminal
[*]   Enable character translations in console
[*]   Support for console on virtual terminal
[*]   Support for binding and unbinding console drivers

這樣才可以在 Graphics support 裡看到 Console display driver support.
有這個東西, 在不需要掛 rootfs 就可以測試 framebuffer 是不是運作正常, 像 console message, 像那欠打的企鵝. 那企鵝還可以拿來當校色標準, 看要調整成 RGB565 還 RGB666 還 RGB24 或其它. 當然, Support for frame buffer devices -> MX3 Framebuffer support 也別忘了選上.

panel 的設定可以參考 arch/arm/mach-imx/mach-pcm043.c 裡的設定與註冊方法, SDHC 也可以參考它的. Phytec 這個 PCM043 有相當多有用的 code 可以參考來當自己 target board 的設定.

NAND 的 partition 註冊:
static struct mtd_partition mxc_nand_partitions[] = {
        {
         .name = "nand.bootloader",
         .offset = 0,
         .size = 4 * 1024 * 1024,
        },
        { //自己加, 這個是最後一段.
         .name = "nand.rootfs",
         .offset = MTDPART_OFS_APPEND,
         .size = MTDPART_SIZ_FULL,
        },
};

static const struct mxc_nand_platform_data mx35pdk_nand_board_info __initconst = {
        .width = 1,
        .hw_ecc = 1,
        .flash_bbt = 1,
        .parts = mxc_nand_partitions,
        .nr_parts = ARRAY_SIZE(mxc_nand_partitions),
};

//board_init 加上
//imx35_add_mxc_nand(&mx35pdk_nand_board_info);

再來頂多是自己在 kernel 裡新增加自己的板子代號, 不過老實講意義不大... 所以略過.

ps. 20130930 3.11.1 裡是 imx_v4_v5_defconfig 這一個

沒有留言: