久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5678|回復: 0
打印 上一主題 下一主題
收起左側

我的BeagleBone學習歷程---Android驅動修改

[復制鏈接]
跳轉到指定樓層
樓主
ID:85681 發表于 2015-7-15 01:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Beaglebone外圍電路設計之驅動代碼修改根據 TI Android ICS 4.0.3 DevKitV3.0.1 AM335x EMV-SK Sources 進行修改。

1 修改使支持beaglebone上的用戶指示燈:

修改的源碼位置: $HOME/rowboat-android/kernel/arch/arm/mach-omap2/board-am335xevm.c


找到:
static struct pinmux_configgpio_led_mux[] = {
       {"gpmc_ad4.gpio1_4",OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
       {"gpmc_ad5.gpio1_5",OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
       {"gpmc_ad6.gpio1_6",OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
       {"gpmc_ad7.gpio1_7",OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
       {NULL, 0},
};

修改成:static struct pinmux_config gpio_led_mux[] = {
        {"gpmc_a5.gpio1_21", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {"gpmc_a6.gpio1_22", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {"gpmc_a7.gpio1_23", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {"gpmc_a8.gpio1_24", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {NULL, 0},
};

找到:
static struct gpio_led gpio_leds[] = {
        {
                .name                        = "am335x:EVM_SK:usr0",
                .gpio                        = GPIO_TO_PIN(1, 4),        /* D1 */
        },
        {
                .name                        = "am335x:EVM_SK:usr1",
                .gpio                        = GPIO_TO_PIN(1, 5),        /* D2 */
        },
        {
                .name                        = "am335x:EVM_SK:mmc0",
                .gpio                        = GPIO_TO_PIN(1, 7),        /* D3 */
                .default_trigger        = "mmc0",
        },
        {
                .name                        = "am335x:EVM_SK:heartbeat",
                .gpio                        = GPIO_TO_PIN(1, 6),        /* D4 */
                .default_trigger        = "heartbeat",
        },
};

修改成:
static struct gpio_led gpio_leds[] = {
        {
                .name                        = "am335x:EVM_SK:usr0",
                .gpio                        = GPIO_TO_PIN(1,21),        /* D1 */
        },
        {
                .name                        = "am335x:EVM_SK:usr1",
                .gpio                        = GPIO_TO_PIN(1, 22),        /* D2 */
        },
        {
                .name                        = "am335x:EVM_SK:mmc0",
                .gpio                        = GPIO_TO_PIN(1, 23),        /* D3 */
                .default_trigger        = "mmc0",
        },
        {
                .name                        = "am335x:EVM_SK:heartbeat",
                .gpio                        = GPIO_TO_PIN(1, 24),        /* D4 */
                .default_trigger        = "heartbeat",
        },
};

2 修改按鍵驅動
修改的源碼位置: $HOME/rowboat-android/kernel/arch/arm/mach-omap2/board-am335xevm.c
如修改LEDS一樣修改兩個地方:
/* pinmux for gpio based key */
static struct pinmux_config gpio_keys_pin_mux[] = {
        {"gpmc_wait0.gpio0_30", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {"gpmc_oen_ren.gpio2_3", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {"gpmc_advn_ale.gpio2_2", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {"gpmc_ben0_cle.gpio2_5", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
        {NULL, 0},
};
/* Configure GPIOs for GPIO Keys */
static struct gpio_keys_button am335x_evm_gpio_buttons[] = {
        {
                .code                   = BTN_0,
                .gpio                   = GPIO_TO_PIN(2, 3),
                .desc                   = "SW1",
        },
        {
                .code                   = BTN_1,
                .gpio                   = GPIO_TO_PIN(2, 2),
                .desc                   = "SW2",
        },
        {
                .code                   = BTN_2,
                .gpio                   = GPIO_TO_PIN(0, 30),
                .desc                   = "SW3",
                .wakeup                 = 1,
        },
        {
                .code                   = BTN_3,
                .gpio                   = GPIO_TO_PIN(2, 5),
                .desc                   = "SW4",
        },
};

注:修改成擴展板對應的按鍵管腳,驅動是讀取高電平有效,如果是需要低電平有效,就在結構體中加入 :active_low=1;
       驅動源碼位于: $HOME/rowboat-android/kernel/arch/driver/input/gpio_keys.c

3 修改觸摸屏驅動
修改的源碼位置: $HOME/rowboat-android/kernel/arch/arm/mach-omap2/board-am335xevm.c
/* TSc controller */
static struct tsc_data am335x_touchscreen_data  = {
        .wires  = 4,
        .x_max = 0x0fff,
        .y_max = 0x0fff,
        .x_plate_resistance = 200,
};

注:.x_plate_resistance根據具體觸摸屏修改。
修改的源碼位于: $HOME/rowboat-android/kernel/arch/driver/input/touchscreen/ti_tscadc.c,其中的:
#ifdef CONFIG_MACH_AM335XEVM
/* Define Touch Screen Boundary Limits */
#define AM335X_TS_XMIN                 0xA5
#define AM335X_TS_XMAX                 0xFB0
#define AM335X_TS_YMIN                 0xDC
#define AM335X_TS_YMAX                 0xF43
#endif
根據觸摸屏的具體情況修改。可根據校準生成文件修改。

4  7寸液晶屏驅動修改:
修改的源碼位置: $HOME/rowboat-android/kernel/arch/arm/mach-omap2/board-am335xevm.c
1
static struct lcd_ctrl_config bone_lcd_cape_cfg = {
        &bone_lcd_cape_disp_panel,
        .ac_bias                = 255,
        .ac_bias_intrpt         = 0,
        .dma_burst_sz           = 16,
        .bpp                    = 16,
        .fdd                    = 0x80,
        .tft_alt_mode           = 0,
        .stn_565_mode           = 0,
        .mono_8bit_mode         = 0,
        .invert_line_clock      = 1,
        .invert_frm_clock       = 1,
        .sync_edge              = 0,
        .sync_ctrl              = 1,
        .raster_order           = 0,
};  

注:實際需要參數根據液晶屏修改
2 增加一個da8xx_lcdc_platform_data:
struct da8xx_lcdc_platform_data my_lcd_pdata = {
        .manu_name                = "XXX",
        .controller_data        = &bone_lcd_cape_cfg,
        .type                        = "YYY",
};

注:XXX,YYY想寫什么就寫什么,關鍵是要與接下來的對應起來

3 修改static void bone_lcdc_init(int evm_id, int profile) 函數:
if (am33xx_register_lcdc(&TFC_S9700RTWV35TR_01B_bone_lcd_cape_pdata))
修改成:
if (am33xx_register_lcdc(&my_lcd_pdat))

接下來:
修改的源碼位于: $HOME/rowboat-android/kernel/arch/driver/video/Da8xx-fb.c
在結構體
static struct da8xx_panel known_lcd_panels[] =  中添加成員:
        [5] = {
                        .name = "YYY",
                        .width = 800,
                        .height = 480,
                        .hfp = 40,
                        .hbp = 38,
                        .hsw = 48,
                        .vfp = 16,
                        .vbp =28,
                        .vsw = 3,
                        .pxl_clk = 30000000,
                        .invert_pxl_clk = 0,
                },

注:YYY與da8xx_lcdc_platform_data中的YYY要一致。

完成上述修改后,需要在
$HOME/rowboat-android/kernel/arch/arm/mach-omap2/board-am335xevm.c 中修改:
static struct evm_dev_cfg beaglebone_dev_cfg[] = {
        {tps65217_init,        DEV_ON_BASEBOARD, PROFILE_NONE},
        {mii1_init,        DEV_ON_BASEBOARD, PROFILE_NONE},
        {usb0_init,        DEV_ON_BASEBOARD, PROFILE_NONE},
        {usb1_init,        DEV_ON_BASEBOARD, PROFILE_NONE},
        {mmc0_init,        DEV_ON_BASEBOARD, PROFILE_NONE},
        {i2c2_init,        DEV_ON_BASEBOARD, PROFILE_NONE},
        {gpio_led_init,        DEV_ON_BASEBOARD, PROFILE_NONE},
        {gpio_keys_init,  DEV_ON_BASEBOARD,PROFILE_NONE},
        {bone_lcdc_init,DEV_ON_BASEBOARD, PROFILE_NONE},
        {lcd_cape_tsc_init,DEV_ON_BASEBOARD, PROFILE_NONE},
        {NULL, 0, 0},
};
修改后 重新制作SD卡啟動效果:









分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91福利在线观看视频 | 蜜桃免费av | av天天干 | 一区二区三区免费在线观看 | 老妇激情毛片免费 | 黄网免费 | 超碰8| 中文字幕在线视频精品 | 午夜羞羞 | 欧美成人在线网站 | 午夜免费福利电影 | 国产伦精品一区二区三区高清 | 欧美日韩在线视频一区 | 午夜在线影院 | 91中文| 国产女人与拘做视频免费 | av中文字幕在线播放 | www.日韩系列 | 精品久久香蕉国产线看观看亚洲 | 亚洲一区国产精品 | 青青草一区二区 | 久久久区| 国产一区二区三区在线 | 成人av网站在线观看 | 久久国产一区 | 国产精品久久久99 | 亚洲免费精品 | 中文字幕日韩三级 | 日韩三| 资源首页二三区 | 中文字幕成人免费视频 | www.日韩系列| 日韩精品免费一区二区在线观看 | 色综合国产 | 免费一级毛片 | 人人人艹| 欧美激情在线观看一区二区三区 | 狠狠久 | 久久国产精品久久 | 久久精品—区二区三区 | 日本一区二区三区免费观看 |