芯片型号:君正M200
软件系统: Android4.3
操作系统: Ubuntu14.04 Server
一.kernel目录
1.Xburst 板级介绍
在君正发布的内核版本中,针对不同的芯片型号,会在 arch/mips/xburst 目录下进行添加,该目录
基本介绍如下:
common/ #所有芯片公共部分
core/ # xburst 核心文件
Kconfig
lib/
Makefile
Platform
soc-4775/ #4775 系列板级
soc-4780/ #4780 系列板级
soc-m200/ #m200 系列板级
soc-x1000/ #x1000 系列板级
以M200芯片平台 glass眼镜项目为例, 进入到上面的soc-m200目录:
├── chip-m200/
├── common/
├── include/
├── Kconfig
└── Makefile
然后再进入到chip-m200/glass/目录:
├── coldwave
│ ├── coldwave_v10/
│ ├── coldwave_v20
│ │ ├── bcm_power_control.c
│ │ ├── board.h
│ │ ├── i2c_resource.c
│ │ ├── Makefile
│ │ ├── pm.c
│ │ └── pmu.h
│ ├── coldwave_v23/
├── coldwave_oled
│ ├── bcm_power_control.c
│ ├── board.h
│ ├── i2c_resource.c
│ ├── Makefile
│ ├── pm.c
│ └── pmu.h
├── common
│ ├── audio_select.c
│ ├── bcm_power_control.c //不同状态下电量控制信息;
│ ├── board_base.c //板级信息;
│ ├── board_base.h //板级信息头文件,GPIO 定义等;
│ ├── board-power-619.c //电压、电流配置;
│ ├── camera.c //Camera 的配置信息;
│ ├── flash_lamp_control.c
│ ├── i2c_bus.c //触摸屏配置信息;
│ ├── inv_mpu_iio.c
│ ├── keyboard_gpio.c
│ ├── lcd
│ ├── leds.c
│ ├── Makefile
│ ├── misc.c //按键,I2C 设备,电池,MAC 等配置信息,及注册各种总线设备;
│ ├── mmc.c //MMC 接口配置信息;
│ ├── regulator.c //电源配置信息,控制外设上电,掉电
│ ├── sound.c //耳机/Volume 配置信息;
│ ├── spi_bus.c
│ ├── virtual_tp.c
│ ├── wifi.c
2.添加新驱动方式
如果新驱动需要使用到硬件资源,则需要通过系统注册设备驱动。
内核中有2种注册设备驱动的方式:
(1)平台驱动:
platform_driver_register(struct platform_device *dev);
platform_driver_unregister(struct platform_device *dev);
(2)I2C 驱动:
i2c_add_driver(struct i2c_client *client, const struct i2c_device_id *id);
i2c_del_driver(struct i2c_client *client);
设备驱动还需要在板级下添加相关设备信息,板级位于:
arch/mips/xburst/soc-m200/chip-m200/glass/,公版为 coldwave 目录
目录下有以下内容:
bcm_power_control.c 蓝牙wifi模块电源管理
board.h: 设备相关的配置,使用宏定义进行自定义
i2c_resource.c:I2C设备相关的配置
pmu.h: 电源相关的配置信息
pm.c: gpio在启动、休眠、唤醒时的配置情况
二.U-Boot配置环境变量
总目录:bootable/bootloader/uboot/
1.修改引导参数
文件位置: bootable/bootloader/uboot/include/configs/coldwave.h
主要修改文件系统的类型和所在的分区位置分别有 rootfstype 和 root 指定,以及 Linux 内核的
启动地址 0x80800000。
#define CONFIG_BOOTARGS BOOTARGS_COMMON "console=ttyS3,115200 mem=256M@0x0 mem=256M@0x30000000 rootdelay=2 init=/linuxrc root=/dev/mmcblk0p1 rw"
#define CONFIG_BOOTCOMMAND "mmc dev 0;mmc read 0x80f00000 0x1800 0x3000; bootm 0x80f00000"
2.修改 DDR 频率
文件位置: bootable/bootloader/uboot/include/configs/coldwave.h
#define CONFIG_SYS_APLL_FREQ 1200000000
#define CONFIG_SYS_MEM_DIV 3 //修改 CONFIG_SYS_MEM_DIV 数值来修改 ddr 的频率。
#define CONFIG_SYS_MEM_FREQ (CONFIG_SYS_APLL_FREQ / CONFIG_SYS_MEM_DIV)
3.修改 IP 地址
文件位置: bootable/bootloader/uboot/include/configs/coldwave.h
#define CONFIG_SERVERIP 192.168.4.13
#define CONFIG_IPADDR 192.168.4.90
#define CONFIG_GATEWAYIP 192.168.4.1
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_ETHADDR 00:11:22:33:44:55
4.选择板级文件编译uboot
文件位置: bootable/bootloader/uboot/include/configs/coldwave.h
在 boards.cfg 文 件 中 以 列 出 了 当 前 uboot 所 支 持 的 所 有 配 置 , 选 择 支 持 该 平 台 的 Target ;
# Target ARCH CPU Board name Vendor SoC Options
###########################################################################################################
integratorcp_cm1136 arm arm1136 integrator armltd - integratorcp:CM1136
imx31_phycore arm arm1136 - - mx31
imx31_phycore_eet arm arm1136 imx31_phycore - mx31 imx31_phycore:IMX31_PHYCORE_EET
burner_jz4775_ddr2 mips xburst burner_jz4775 ingenic jz4775 burner_jz4775:DDR_TYPE_DDR2
burner_jz4780_ddr3 mips xburst burner_jz4780 ingenic jz4780 burner_jz4780:DDR_TYPE_DDR3
burner_jz4780_lpddr mips xburst burner_jz4780 ingenic jz4780 burner_jz4780:DDR_TYPE_LPDDR
dorado_v21_uImage_msc0 mips xburst dorado ingenic m200 dorado:SPL_MMC_SUPPORT,ENV_IS_IN_MMC,GPT_CREATOR,JZ_MMC_MSC0,DORADO_V21
coldwave_android_msc0 mips xburst coldwave ingenic m200 coldwave:SPL_MMC_SUPPORT,ENV_IS_IN_MMC,GPT_CREATOR,JZ_MMC_MSC0,BOOT_ANDROID
coldwave_oled_android_msc0 mips xburst coldwave_oled ingenic m200 coldwave_oled:SPL_MMC_SUPPORT,ENV_IS_IN_MMC,GPT_CREATOR,JZ_MMC_MSC0,BOOT_ANDROID
coldwave_v23_android_msc0 mips xburst coldwave_v23 ingenic m200 coldwave_v23:SPL_MMC_SUPPORT,ENV_IS_IN_MMC,GPT_CREATOR,JZ_MMC_MSC0,BOOT_ANDROID
coldwave_v23_uImage_msc0 mips xburst coldwave_v23 ingenic m200 coldwave_v23:SPL_MMC_SUPPORT,ENV_IS_IN_MMC,GPT_CREATOR,JZ_MMC_MSC0,BOOT_LINUX
本平台的Target项为:
coldwave_android_msc0
执行如下命令:
$ make coldwave_android_msc0