博客專欄

        EEPW首頁 > 博客 > AM62x的A核如何調(diào)用M核的引腳

        AM62x的A核如何調(diào)用M核的引腳

        發(fā)布人:forlinx2013 時(shí)間:2022-10-31 來源:工程師 發(fā)布文章

         飛凌嵌入式FET6254-C核心板基于TI Sitara? AM62x系列工業(yè)級處理器設(shè)計(jì)開發(fā),由于AM6254采用了Cortex-A53+Cortex-M4F的處理核+控制核架構(gòu)組合,因此引腳自然也是分為A核的引腳和M核的引腳。


        如果A核的引腳不夠用怎么辦?可以把M核的引腳用作A核嗎?答案是肯定的。今天小編將為大家分別介紹這顆核心板的GPIO引腳信號描述、A核使用A核的引腳、用戶空間如何控制GPIO以及A核如何調(diào)用M核的引腳并復(fù)用成GPIO。

        關(guān)于AM6254的GPIO信號描述

        我們通過GPIO可以了解有關(guān)AM6254這顆CPU的引腳框架,CPU手冊目錄:用戶資料/原廠資料/SPRSP58_AM62x_DS_AI_2_16_2022,在6.3.10GPIO章節(jié)有如下描述:

        AM6254的GPIO信號一共有兩大組:分別是MAINDomain和MCUDomain,其中MAINDomain是A核的GPIO,有兩組GPIO0和GPIO1,分別是92和52個(gè)引腳。

        MCUDomain是M核的GPIO,有一組GPIO0,24個(gè)引腳。

        6.2Pin Attributes章節(jié)描述了引腳的控制寄存器PADCONFIG名稱以及地址,以及每個(gè)引腳的屬性。例如B13引腳,引腳名稱是SPI0_D0,寄存器名稱為PADCONFIG112,寄存器地址為0x000F41C0,可以復(fù)用的功能如下:

        Linux系統(tǒng)可以使用devmem2查看寄存器值。

        root@ok6254:~# devmem2 0x000F41C0

        /dev/mem opened.

        Memory mapped at address0xffff969c0000.

        Read at address 0x000F41C0(0xffff969c41c0):0x00010007

        root@ok6254:~#


        5.1.2.3Pad Configuration Register Functional Description章節(jié)。

        A核使用A核的引腳

        了解了引腳信號的描述,先不要著急,接下來先熟悉一下A核的引腳復(fù)用方法,以將SPI_D0用作GPIO為例,設(shè)備樹配置修改如下:

        arch/arm64/boot/dts/ti/OK6254-C.dts

        修改完成后編譯設(shè)備樹,會在Image目錄下生成鏡像,然后替換dtb鏡像,替換目錄:/boot/OK6254-C.dtb。執(zhí)行sync保存后重啟。

        用戶空間如何控制GPIO

        為了查看是否修改成功,可以使用如下命令查看GPIO使用情況


        方式1:

        使用內(nèi)核的gpio-leds驅(qū)動

        root@ok6254:~# cd /sys/class/leds/

        root@ok6254:/sys/class/leds#ls

        heartbeat led1 led2 led3 mmc0:: mmc1:: mmc2::

        root@ok6254:/sys/class/leds#

        進(jìn)入其中一個(gè)led1

        root@ok6254:/sys/class/leds#cd led1/

        root@ok6254:/sys/class/leds/led1#ls

        brightness device max_brightness power subsystem trigger uevent

        root@ok6254:/sys/class/leds/led1#

        設(shè)備樹默認(rèn)配置觸發(fā)方式trigger為timer,此時(shí)的led是按照定時(shí)亮滅的,可以改成手動控制。

        root@ok6254:/sys/class/leds/led1#echo none > trigger 將方式改成正常模式

        root@ok6254:/sys/class/leds/led1#echo 1 > brightness 熄滅

        root@ok6254:/sys/class/leds/led1#echo 0 > brightness 點(diǎn)亮

        root@ok6254:/sys/class/leds/led1#

        方式2:

        使用/sys/class/gpio,注意,該方式不需要再設(shè)備配置leds節(jié)點(diǎn),只需要配置引腳即可。如下是將gpmc_ad15引腳配置成GPIO。

        關(guān)于gpiochip的計(jì)算公式如下:

        Gpmc_ad15的引腳是gpio0_30,chip值為402+30=432,導(dǎo)出gpio:

        root@ok6254:~#echo432>/sys/class/gpio/export

        設(shè)置方向:

        root@ok6254:~# echo out >/sys/class/gpio/gpio432/direction

        設(shè)置高低電平:

        root@ok6254:~# echo 1 >/sys/class/gpio/gpio432/value 置高

        root@ok6254:~# echo 0 >/sys/class/gpio/gpio432/value 拉低

        root@ok6254:~#

        A核如何調(diào)用M核的引腳并復(fù)用成GPIO?

        設(shè)備樹配置:

        &mcu_pmx0 {

        mymcugpio1_pins_default:mymcugpio1-pins-default{

        pinctrl-single,pins=<

        AM62X_MCU_IOPAD(0x004,PIN_INPUT,7)

        >;

        };

        };

        &mcu_gpio0 {

        pinctrl-names ="default";

        pinctrl-0=<&mymcugpio1_pins_default>;

        status = "okay";

        };


        使用gpio-leds驅(qū)動的配置,在leds節(jié)點(diǎn)中添加如下(若您正在使用手機(jī)閱讀,建議您關(guān)掉“深色模式”):

        ---a/arch/arm64/boot/dts/ti/OK6254-C.dts

        +++b/arch/arm64/boot/dts/ti/OK6254-C.dts

        @@ -166,7 +166,7 @@

        compatible= "gpio-leds";

        pinctrl-names= "default";

        pinctrl-0= <&usr_led_pins_default>;

        -

        + pinctrl-1 = <&mymcugpio1_pins_default>;

        led-0 {

        label= "heartbeat";

        gpios= <&main_gpio0 42 GPIO_ACTIVE_HIGH>;

        @@ -206,6 +206,14 @@

        led-pattern= <500 500>;

        default-state= "on";

        };

        +

        + led-5 {

        + label = "led5";

        + gpios = <&mcu_gpio0 1 GPIO_ACTIVE_HIGH>;

        + linux,default-trigger = "timer";

        + led-pattern = <500 500>;

        + default-state = "on";

        + };

        };

        控制方式與前面提到的方式1和方式2一樣,至此GPIO的復(fù)位完成。

        當(dāng)然其他接口I2C、CAN、SPI、UART也是類似,想要了解更詳細(xì)的使用方式,大家可以關(guān)注后續(xù)的應(yīng)用筆記。點(diǎn)擊下圖進(jìn)入飛凌嵌入式官網(wǎng),了解更多產(chǎn)品詳情。


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: AM6254

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 如东县| 社旗县| 阿拉善左旗| 千阳县| 崇州市| 永顺县| 霍州市| 四会市| 铁力市| 景德镇市| 西乌| 吴旗县| 依兰县| 五常市| 崇文区| 九台市| 浮山县| 凤山市| 赫章县| 泸西县| 阳新县| 伊金霍洛旗| 湖口县| 凌源市| 玉溪市| 沂源县| 汶上县| 黄梅县| 博爱县| 宜良县| 邓州市| 澜沧| 南通市| 惠水县| 朔州市| 苍南县| 沅江市| 博野县| 福州市| 福建省| 武夷山市|