君正M200平台修改纪要

版权声明:本文为博主【limin13215】原创文章,欢迎转载,转载请注明链接地址! https://blog.csdn.net/limin13215/article/details/82835105
芯片型号:君正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

猜你喜欢

转载自blog.csdn.net/limin13215/article/details/82835105