基於訊為4412開發板的Android開發流程

來源:互聯網
上載者:User

標籤:

 

訊為4412開發板  使用三星2410晶片,基於arm9架構,由於自己電腦硬體的局限,只能跑Android4.0.3系統。

 

1、Uboot這個直接使用官方鏡像燒寫就可以了,一般情況不用去重複燒寫。

  略。

  燒寫命令:fastboot.exe flash bootloader u-boot-iTOP-4412.bin

2、linux Kernel

  1)裝置驅動

    --字元裝置驅動

    --雜項裝置驅動

    --I2C裝置驅動(兩種模式

      a,linux內部i2c體系

        包括兩部分:i2c裝置驅動與i2c匯流排驅動,匯流排驅動在kernel裡已經存在了,裝置驅動請自己寫。

        在這裡不得不吐槽一下4412開發板,雖然有7個i2c介面,但是只有兩個外接!i2c6與i2c7,i2c7外掛的是觸摸驅動,應該不能繼續外掛其他裝置了,因為i2c匯流排同一時間只能響應一個裝置,所以能用的只有i2c6,可惜我使勁了好久,依舊不能request到匯流排,一直匯流排忙,return-110 。

      b,使用gpio類比i2c時序

        類比i2c需要注意晶片的i2c時序,否則會得不到ack!!這種方法可以使用雜項裝置進行註冊,驅動和雜項裝置驅動類似。

 

  2)註冊到kernel中(平台檔案:arch/arm/mach-exynos/mach-itop4412.c

    --字元類裝置

       首先聲明裝置資訊,注意裡面的.name變數,這個name變數需要和驅動裡的.name相同,這樣才能順利進入probe函數中。

struct platform_device s3c_device_XXX ={        .name   = "match-name",        .id             = -1,};

      然後在platform_device *smdk4x12_devices[] __initdata函數中註冊,這樣一個字元類裝置就註冊成功了。

&s3c_device_XXX,

      補上裝置驅動裡需要的匹配資訊

struct platform_driver XXX_driver = {    .probe = XXX_probe,    .remove = XXX_remove,    .shutdown = XXX_shutdown,    .suspend  = XXX_suspend,    .resume = XXX_resume,    .driver = {        .name = match-name,  //這個.name就是需要匹配的項        .owner = THIS_MODULE,    }};

 

    --i2c驅動

      首先需要確定沒有其他驅動佔用該i2c匯流排,以i2c7為例:

static struct i2c_board_info i2c_devs7[] __initdata = {#ifdef CONFIG_TOUCHSCREEN_TSC2007    {        I2C_BOARD_INFO("tsc2007", 0x48),    //匹配項,從裝置地址(讀寫addr>>1)        .type        = "tsc2007",        .platform_data    = &tsc2007_info,        .irq = IRQ_EINT(0),    },#endif};

      平台檔案已經在init函數裡註冊好了,所以就只要添加自己的裝置名稱就ok了。

 

  3)編譯

    a,編譯進kernel

      開啟驅動所在目錄下的Makefile和Kconfig檔案,以leds點燈為例

      --Makfile

      在最後添加obj-$(CONFIG_LEDS_CTL)        += itop4412_leds.o,產生itop4412_leds.o檔案。

      --Kconfig

      在最後添加如下資訊:

config LEDS_CTL        bool "Enable LEDS config"        default y        help          Enable LEDS config

    b,以模組編譯

      Makefile檔案如上。

      Kconfig檔案更改如下:

config LEDS_CTL        tristate "Enable LEDS config"        default y        help          Enable LEDS config

    配置資訊編寫完畢,在Ubuntu裡使用make menuconfig命令進入核心配置

    選中Enable LEDS config選項,則LEDS_CTL=1,否則為0.

    同時平台檔案中的配置如下:

    --編譯進核心

#ifdef CONFIG_LEDS_CTLstruct platform_device s3c_device_leds_ctl = {        .name   = "leds",        .id             = -1,};#endif

    --以模組編譯

#if defined(CONFIG_LEDS_CTL) || defined(CONFIG_LEDS_CTL_MODULE)struct platform_device s3c_device_leds_ctl = {        .name   = "leds",        .id             = -1,};#endif

    注意這兩個還是有一點區別的。

 

  3)更改linux啟動圖片

    使用image2Lcd軟體把一個bmp圖片轉換成一個數組

    更改drivers/video/samsung/ iTop-4412.h檔案中的第二個數組內容,ok!

    如果只要顯示文字,那麼圖片的背景請設定為黑色:#ffffff

 

  最後執行make命令就ok了。

  會產生一個zImage檔案:arch/arm/boot/zImage

  燒寫命令:fastboot.exe flash kernel zImage

 

 3、Android系統編譯

    1)訪問裝置節點的許可權

      開啟device/samsung/smdk4x12/conf/init.smdk4x12.rc

      在最後增加chmod 0777 xxx,儲存退出。

      注意!!這個檔案最後會打包到ramdisk_uboot.img中,所以在燒寫system的時候需要同時燒寫,否則更改失敗。

    2)APP開機自啟

      開啟device/samsung/smdk4x12/device.mk,以leds為例

#Install LedTestPRODUCT_COPY_FILES +=         device/samsung/smdk4x12/apk/topeet/ledtest/ledtest.apk:system/app/ledtest.apkPRODUCT_COPY_FILES +=         device/samsung/smdk4x12/apk/topeet/ledtest/libled.so:system/lib/libled.so

      注釋:注意路徑問題,並且把檔案下載到相應的目錄下,即.apk與.so檔案都位於device/samsung/smdk4x12/apk/topeet/ledtest目錄下。

 

    3)更改android啟動時顯示的logo

      這裡我就有點取巧啦,直接更改圖片資源:frameworks/base/core/res/assets/images

      該目錄下有兩個檔案,android-logo-mask.png這個就是android的啟動時顯示的圖片。

 

  使用./build_android.sh命令編譯Android

  最後會產生system鏡像:位於out/target/product/smdk4x12目錄下的system.img與ramdisk_uboot.img檔案。

  燒寫命令:fastboot.exe flash system system.img / fastboot.exe flash ramdisk ramdisk-uboot.img

 

最後重啟:fastboot reboot

 

---------------------------------------------<完>-------------------------------------------------

 

基於訊為4412開發板的Android開發流程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.