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.

am335x platform平台设备驱动

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这个平台是不需要这样的硬件资源结构体?或者说它藏在哪里我没发现?再或者说它被其他的相似的结构所代替了?本人初学,甚是不解,望解疑。

  • resource这个结构体是和Linux驱动模型相关的,在智利应该是代表寄存器地址和中断号。

    你可以网上搜下这个结构体的用法。

  • 我知道这个结构体是啥意思,在sdk(board-am335xevm.c)里面有对led实现platform总线的用法,但里面没有出现这个资源结构体,我在网上找了很多关于platform用法,里面都是有讲到这个资源结构体的,但sdk里面没有。。。sdk里面没有。。。sdk里面没有。。。那么,它在其中的作用被什么代替了呢。

  • linux 3.0以后,这些资源信息现在是设备树文件里面吧!

  • 在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 };

x 出现错误。请重试或与管理员联系。