linux(M6G2C) 修改配置 dts 文件


dts 是device tree source 的简写,设备树源文件, linux 修改硬件就靠该这个文件了.
1. 来到 arch/arm/boot/dts 目录, 有很多种dts 文件, 找到你要修改的那个,
   从内核编译的过程中能知道你要编译的那个文件的名称. 我的叫 imx6g2c-256m.dts
2. 参照原来的样子来依样画葫芦的改,
    例如 原来有 GPIO4_IO21 的配置是正常的, 如下:
    MX6UL_PAD_CSI_DATA00__GPIO4_IO21 0x10b0
    现在想加 GPIO4_IO22 , 那自然是copy 下那一行, 并把GPIO4_IO21 改为GPIO4_IO22
    这样参考该文件相关信息,补齐了我的配置,大概修改了有7, 8处地方吧.

3. 编译.
    采用的是编译系统的命令,
     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8
     可是不出所料,出现了错误:

Error: arch/arm/boot/dts/imx6g2c-256m.dts:538.8-9 syntax error
FATAL ERROR: Unable to parse input tree
scripts/Makefile.lib:293: recipe for target 'arch/arm/boot/dts/imx6g2c-256m.dtb' failed
make[1]: *** [arch/arm/boot/dts/imx6g2c-256m.dtb] Error 1
arch/arm/Makefile:327: recipe for target 'dtbs' failed

还好,它提示了行号imx6g2c-256m.dts:538 行, 找到那一行,是我们刚刚添加的. 说明名称没有添加对.

4. 修改:
    先为内核系统文件建一个tags 文件, ctags -R  生成tags
    再到arch/arm/boot/dts 目录,再用vim 打开imx6g2c-256m.dts, 用set tags+=<路径名新tags>
    就可以在系统中查找名称的定义了.
    原来的GPIO4_IO21 用tag 命令一查为:
    #define MX6UL_PAD_CSI_DATA00__GPIO4_IO21                          0x01E4 0x0470 0x0000 0x5 0x0

所在的文件为 /home/hjj/M6G2C/04.源码示例/3.软件源码/linux-src/arch/arm/boot/dts/imx6ul-pinfunc.h
    而我们添加的GPIO4_IO22 则用tag 键找不到定义, 在这个文件中找一下,发现为
    MX6UL_PAD_CSI_DATA01__GPIO4_IO21 0x10b0

    把我们刚才copy 的DATA00改为DATA01, 再编译,就通过了.
    其它几个copy 的名称也用该方式修改好,就编译出dtb 文件了.

    由此也可看到,tags 文件不用使用整个系统的, 在dts 目录下也已经够用了.

另外,一个引脚只能定义一种功能,例如DATA17 定义了gpio, 就不要定义其它功能了,例如uart或sdh等
例如DATA17可以有如下多重选择,但你只能选用其中一种,不能选择2种以上
#define MX6UL_PAD_LCD_DATA17__LCDIF_DATA17                        0x015C 0x03E8 0x0000 0x0 0x0
#define MX6UL_PAD_LCD_DATA17__UART7_DCE_RX                        0x015C 0x03E8 0x0654 0x1 0x3
#define MX6UL_PAD_LCD_DATA17__UART7_DTE_TX                        0x015C 0x03E8 0x0000 0x1 0x0
#define MX6UL_PAD_LCD_DATA17__CA7_MX6UL_TRACE_CTL                 0x015C 0x03E8 0x0000 0x2 0x0
#define MX6UL_PAD_LCD_DATA17__CSI_DATA00                          0x015C 0x03E8 0x04D0 0x3 0x1
#define MX6UL_PAD_LCD_DATA17__EIM_DATA09                          0x015C 0x03E8 0x0000 0x4 0x0
#define MX6UL_PAD_LCD_DATA17__GPIO3_IO22                          0x015C 0x03E8 0x0000 0x5 0x0
#define MX6UL_PAD_LCD_DATA17__SRC_BT_CFG25                        0x015C 0x03E8 0x0000 0x6 0x0
#define MX6UL_PAD_LCD_DATA17__USDHC2_DATA7                        0x015C 0x03E8 0x0698 0x8 0x0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值