This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
HI,我最近在学习am335x platform平台设备驱动,用的是sdk06,但我在里面没有发现像下面一样的硬件资源结构体(这是我在其他平台上找到的),
static struct resource led_resources[] = {
[0] = {
.start = 0xE0200280,
.end = 0xE0200280 + 8 -1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = 0, /* LED1 */
.end = 0,
.flags = IORESOURCE_IRQ,
},
};
请问一下,am335x这个平台是不需要这样的硬件资源结构体?或者说它藏在哪里我没发现?再或者说它被其他的相似的结构所代替了?本人初学,甚是不解,望解疑。
在TI发布的SDK7.0以及之后的版本,才有设备树配置。SDK6.0里面并没有使用设备树,而是在board-am335xevm.c文件中进行的配置。
每个平台的代码实现上,是有些区别的。这些结构体的定义,和你的系统中最终的实现调用的方式有关系。也就是说各平台,对于这种资源结构体的定义都是根据各平台自己定义的结构体模式来规划的,未必是一样的。
在TI的初始化代码中,针对初始化的函数可以在board-am335xevm.c中找到,举个例子如下:(忽略我的显示前面有行号的标识)
在初始化这个板子的配置中,有下列的资源,需要被配置。然后你在查找我下面标注的这些初始化函数,然后就能跟进到具体的配置。
21 /* General Purpose EVM */
2122 static struct evm_dev_cfg gen_purp_evm_dev_cfg[] = {
2123 {am335x_rtc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
2124 {clkout2_enable, DEV_ON_BASEBOARD, PROFILE_ALL},
2125 {enable_ecap0, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 |
2126 PROFILE_2 | PROFILE_7) },
2127 {lcdc_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 |
2128 PROFILE_2 | PROFILE_7) },
2129 {mfd_tscadc_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 |
2130 PROFILE_2 | PROFILE_7) },
2131 {rgmii1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
2132 {rgmii2_init, DEV_ON_DGHTR_BRD, (PROFILE_1 | PROFILE_2 |
2133 PROFILE_4 | PROFILE_6) },
2134 {usb0_init, DEV_ON_BASEBOARD, PROFILE_ALL},
2135 {usb1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
2136 {evm_nand_init, DEV_ON_DGHTR_BRD,
2137 (PROFILE_ALL & ~PROFILE_2 & ~PROFILE_3)},
2138 {i2c1_init, DEV_ON_DGHTR_BRD, (PROFILE_ALL & ~PROFILE_2)},
2139 {lis331dlh_init, DEV_ON_DGHTR_BRD, (PROFILE_ALL & ~PROFILE_2)},
2140 {mcasp1_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_3 | PROFILE_7)},
2141 {mmc1_init, DEV_ON_DGHTR_BRD, PROFILE_2},
2142 {mmc2_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 |
2143 PROFILE_5)},
2144 {mmc0_init, DEV_ON_BASEBOARD, (PROFILE_ALL & ~PROFILE_5)},
2145 {mmc0_no_cd_init, DEV_ON_BASEBOARD, PROFILE_5},
2146 {spi0_init, DEV_ON_DGHTR_BRD, PROFILE_2},
2147 {uart1_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 |
2148 PROFILE_5)},
2149 {wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | PROFILE_5)},
2150 {d_can_init, DEV_ON_DGHTR_BRD, PROFILE_1},
2151 {matrix_keypad_init, DEV_ON_DGHTR_BRD, PROFILE_0},
2152 {volume_keys_init, DEV_ON_DGHTR_BRD, PROFILE_0},
2153 {uart2_init, DEV_ON_DGHTR_BRD, PROFILE_3},
2154 {haptics_init, DEV_ON_DGHTR_BRD, (PROFILE_4)},
2155 {sgx_init, DEV_ON_BASEBOARD, PROFILE_ALL},
2156 {NULL, 0, 0},
2157 };