① 二、IMX6ULL——GPIO
2.跟STM32一樣,IMX也需要開啟GPIO時鍾, 寄存器CCM_CCGR0~CCM_CCGR6控制著所有外設的時鍾,不只有GPIO的時鍾。
3.舉例:用GPIO1組的IO 00腳
IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00設置IO復用功能為GPIO
IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00設置GPIO的屬性,跟STM32一樣但功能比單片機多
包括上拉,下拉,速度,狀態。。。
4.ICR1,ICR2寄存器分別用於配置低16個GPIO和高16個GPIO的中斷,為什麼是16個?因為GPIO分為5組,每組最多32個GPIO .
每個GPIO佔用2位, 2位用來設置這個GPIO到底是什麼觸發,上升沿觸發,下降沿觸發,高電平觸發,低電平觸發。
5.IMR寄存器32位,一位對應一個GPIO當對應位置1 , 這個GPIO就上下沿即雙邊沿觸發中斷,這個設置覆蓋ICR1和ICR2.
①、使能 GPIO 對應的時鍾。
②、設置寄存器 IOMUXC_SW_MUX_CTL_PAD_XX_XX,設置 IO 的復用功能,使其復用
為 GPIO 功能。
③、設置寄存器 IOMUXC_SW_PAD_CTL_PAD_XX_XX,設置 IO 的上下拉、速度等等。
④、第②步已經將 IO 復用為了 GPIO 功能,所以需要配置 GPIO,設置輸入/輸出、是否使
用中斷、默認輸出電平等。
② iMX6ull SD卡系統和Nandflash系統
系統源碼和編譯方法,[參見連接] ( https://community.nxp.com/docs/DOC-334274 )其中dtb文件針對LCD或HDMI修改的內容對iSpeaker無影響,不用去修改。我們會使用另外的dtb文件。
燒寫SD方式也不採用這個文檔中的方法,直接在linux命令行下如下操作:
Nandflash使用zImage,dtb文件和SD卡中使用的完全一致。Uboot文件SD中使用的不能用於Nandflash,源碼另見。
燒寫Nandflash需要用SD卡系統盤啟動,SD卡系統中需要已安裝mtd-utils工具。系統啟動後能正常看到mtd0~mtd4分區。按照下面步驟操作:
$ flash_erase /dev/mtd0 0 0
$ flash_erase /dev/mtd1 0 0
$ flash_erase /dev/mtd2 0 0
$ kobs-ng init -x u-boot.imx --search_exponent=1 -v
$ flash_erase /dev/mtd3 0 0
$ nandwrite -p /dev/mtd3 zImage
$ nandwrite -p /dev/mtd3 -s 0x7e0000 imx.dtb
$ ubiformat /dev/mtd4 -f ubi.img
其中使用ubi.img文件,在linux主機下製作方法如下:
使用的根文件系統和SD卡中的根文件系統一樣,假設SD卡已插入linux主機usb介面,並將第二個分區掛載與/mnt下,首先在linux主機工作目錄下建立文本文件ubifs.cfg,內容如下:
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
然後執行如下命令:
$ mkfs.ubifs -x zlib -m 2048 -e 124KiB -c 3965 -r /mnt ubifs.img
$ ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 -O 2048 ubifs.cfg
③ imx6 交叉工具鏈中arm-fsl-linux-gnueabi-gcc*是個什麼文件
這是交叉編譯器
你可以去找個開發板廠商的用戶手冊去了解一下,這些常用信息都有的,飛凌的iMX6用戶手冊寫的不錯。