AM335x應(yīng)用筆記-AM335x主板18個(gè)問(wèn)題整理及解決思路 第一章(連載)

原創(chuàng) 作者 AM335x 2020-12-22 15:48:00 AM335x

本文基于飛凌嵌入式AM335x嵌入式ARM主板為基礎(chǔ)講解,系統(tǒng)采用Linux,以下問(wèn)題已經(jīng)在AM335x 主板上做了驗(yàn)證,通過(guò)本文您可以快速解決AM335x平臺(tái)一些容易出錯(cuò)的地方,由于各個(gè)廠家提供的鏡像不同,如您選擇其他廠商ARM主板,請(qǐng)酌情參考使用。本次共整理了18個(gè)問(wèn)題,由于內(nèi)容較多分為兩章講解分享,本章分享第1-12問(wèn)題解決思路。

為便于查詢檢索AM335x問(wèn)題,小編列出目錄,請(qǐng)根據(jù)您的需查詢。


AM335x 應(yīng)用筆記

1、AM335x  Linux系統(tǒng)自啟運(yùn)行Qt程序

2、AM335x Qt程序添加背景-

3、AM335x Qt界面應(yīng)用程序中取消光標(biāo)的方法

4、AM335x  Linux QT視頻打開(kāi)不能退出問(wèn)題

5、AM335x 開(kāi)機(jī)LOGO連續(xù)顯示的方法

6、AM335x 更改Qt界面 — FORLINX字符串

7、AM335想 更改開(kāi)機(jī)畫(huà)面—左上角小企鵝圖標(biāo)

8、AM335x  生成按鍵設(shè)備名keypad的方法

9 、AM335X更改GPIO的方法

10、AM335x  SPI改成CAN的方法

11、AM335x 增加串口的方法

12、AM335x解決開(kāi)發(fā)板觸摸不靈敏問(wèn)題

13、AM335x  添加應(yīng)用程序到桌面的方法

14、AM335x  解決NAND erase.chip燒寫(xiě)錯(cuò)誤的方法

15、AM335x  添加LCD的方法

16、AM335x  系統(tǒng)自動(dòng)登錄方法

17、AM335x  硬件看門(mén)狗開(kāi)啟方法

18、AM335x  修改MAC地址


注:本文所提到的鏡像、源碼等,請(qǐng)?jiān)陲w凌提供的下載資料中查詢。



正文開(kāi)始:

1、AM 335x Linux系統(tǒng)自啟運(yùn)行Qt程序

修改的文件路徑及文件名:/etc/init.d/qt.sh

比如AM335x ARM主板要開(kāi)機(jī)自啟動(dòng)自己編寫(xiě)的qt應(yīng)用程序Helloworld(假如程序放在文件系統(tǒng)的‘ / ’  目錄下),我們修改一下文件末尾就行,修改如下:

修改前

修改的文件路徑前

修改后

文件路徑修改后

說(shuō)明,注釋掉 ./matrix_gui -qws 2>/dev/null &(如果不注釋,會(huì)有影響),然后,添加自己的應(yīng)用程序。

修改完qt.sh文件保存退出,然后輸入命令sync,重啟開(kāi)發(fā)板

注:重啟AM335x 開(kāi)發(fā)板前,一定要輸入sync,否則,修改的文件會(huì)恢復(fù)成原樣,無(wú)法生效。


2、Qt程序添加背景

給自編的qt程序添加背景可以美化qt程序的外觀,現(xiàn)介紹兩種添加背景的方法:

1、如果單純拷到AM335x ARM板上運(yùn)行顯示背景,可以重寫(xiě)paintEvent()事件,在該事件中用畫(huà)筆QPainter的方式畫(huà)整個(gè)背景,該方法在把程序添加到桌面后背景無(wú)法正常顯示。

    void MainWindow::paintEvent(QPaintEvent *event)

{

    QPainter painter(this);

  painter.drawPixmap(0,0,width(),height(),QPixmap("./11.png"));

}

經(jīng)驗(yàn)證png格式的圖片可以正常顯示,其他格式的例如jpg格式是無(wú)法顯示的。

2、使用樣式表,該方式將圖片作為資源文件添加到工程中,通過(guò)讀取資源文件完成背景的設(shè)置。該方式在把程序添加到桌面后依然可以正常顯示。下面簡(jiǎn)介一下步驟:

背景設(shè)置

(1)把背景圖片作為Qt資源文件添加到項(xiàng)目中,在資源文件中添加前綴/image,然后將圖片添加進(jìn)來(lái)如下圖:

注:先點(diǎn)擊Add Prefix添加前綴,再點(diǎn)Add Files添加圖片文件。

添加圖片文件

(2)Qt樣式表可以存放以.qss為后綴的文件,所以可以在程序中調(diào)用不同的.qss文件實(shí)現(xiàn)不同背景的替換。在資源文件中添加“/qss”前綴,再添加資源文件,在左側(cè)細(xì)目列表處右擊添加文件,選擇General中的文本文檔,命名為my.qss,可以多添加幾個(gè)。然后參照添加圖片的方法將此文件添加到/qss前綴下。

添加到/qss前綴下

然后編輯此文本文檔,下面的代碼僅供參考:

然后在MainWindow的構(gòu)造函數(shù)中調(diào)用此文檔即可,如下:

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    QFile file(":/qss/my.qss");

    file.open(QFile::ReadOnly);

    QStringstyleSheet=tr(file.readAll());

    qApp->setStyleSheet(styleSheet);

}

這樣就可以將圖片設(shè)置為背景圖案了。


3、Qt界面應(yīng)用程序中取消光標(biāo)的方法

在AM335x的應(yīng)用程序中有光標(biāo)顯示,如果想要不顯示光標(biāo),客戶可以自己編寫(xiě)應(yīng)用程序,然后在應(yīng)用程序的主函數(shù)main中添加QWSServer::setCursorVisible(false);


4、 Linux QT視頻打開(kāi)不能退出問(wèn)題

問(wèn)題:舊版本的AM335x系列產(chǎn)品Linux QT視頻出現(xiàn)打開(kāi)不能退出

注:  新版本的產(chǎn)品中已經(jīng)沒(méi)有了該問(wèn)題

解決方法:去掉循環(huán)播放

修改文件系統(tǒng)源碼: \forlinx\web\lighttpd\webpages\shell\下的腳本,將movie-once.sh腳本重新命名為movie.sh,替換掉原有的movie.sh即可。


5、 開(kāi)機(jī)LOGO連續(xù)顯示的方法

現(xiàn)在發(fā)布的鏡像燒寫(xiě)啟動(dòng)后uboot和內(nèi)核的logo不是連續(xù)顯示的,中間大概有5S的黑屏?xí)r間,怎樣去掉這個(gè)黑屏?xí)r間呢?

這需要修改代碼如下: 

arch/arm/mach-omap2/board-am335xevm.c文件中 

void ecap_init(intevm_id, int profile)函數(shù)中 

#if defined(CONFIG_OK335XD)

setup_pin_mux(ecap0_pin_mux);

改為:

//setup_pin_mux(ecap0_pin_mux);

重新編譯內(nèi)核,燒到板子上即可 。

同時(shí)可以看到有關(guān)AM335其他平臺(tái)的配置內(nèi)容,注釋掉對(duì)應(yīng)平臺(tái)的內(nèi)容,效果相同。


6、更改Qt界面 —FORLINX字符串

修改AM335x的QT界面中出現(xiàn)的FORLINX DEMOS字符以及字符前邊的logo的方法:首先,需要知道的是FORLINX DEMOS字符串修改所在的文件在rootfs文件系統(tǒng)下邊的/forlinx/web/lighttpd/webpages/submenu.php文件中: AM335xQT界面FORLINX DEMOS字符串

將其改為需要的字樣保存。

其次,F(xiàn)ORLINX DEMOS字符串前邊的logo圖片在的rootfs文件系統(tǒng)下邊的/forlinx/web/lighttpd/webpages/images文件夾中,大小為30x30,png格式,制作圖片替換即可。


7、更改開(kāi)機(jī)畫(huà)面—左上角小企鵝圖標(biāo)

使用下面的方法可以將企鵝的Logo換成自己喜歡的任意圖片。

首先準(zhǔn)備一幅自己喜歡的圖片,然后將背景涂成黑色。然后將該圖片保存成png格式,例如linuxlogo.png。將該圖片保存在/home/forlinx/work/目錄下

打開(kāi)虛擬機(jī)進(jìn)入U(xiǎn)buntu開(kāi)發(fā)環(huán)境,在linuxlogo.png的同一目錄下使用下面的命令:

 

# pngtopnm linuxlogo.png >linuxlogo.pnm

# pnmquant 224 linuxlogo.pnm> linuxlogo224.pnm

# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm

 

運(yùn)行完上面的命令之后,生成linuxlogo224.ppm文件

 

打開(kāi)產(chǎn)品用戶資料,拷貝src目錄下的kernel-3.2.tar.bz2文件到虛擬機(jī)的/home/forlinx/work下面,然后執(zhí)行以下命令。

#tar xvf kernel-3.2.tar.bz2

#mv/home/forlinx/work/linuxlogo224.ppm /kernel-3.2/drivers/video/logo/logo_linux_clut224.ppm

(最好先做好備份),然后刪除同一目錄下的logo_linux_clut224.c文件,

然后重新編譯內(nèi)核(以軟件手冊(cè)的編譯方法為準(zhǔn))

編譯SDIO WIFI功能的內(nèi)核時(shí):

#cp arch/arm/configs/ok335xd_evm_linux_sdio_defconfig .config 

編譯USB WIFI功能的內(nèi)核時(shí):

#cp arch/arm/configs/ok335xd_evm_linux_usb_defconfig .config 

然后編譯:

#make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage

編譯完成后會(huì)自動(dòng)在arch/arm/boot/ 目錄形成uImage文件,

將該文件拷入SD卡boot分區(qū)或燒寫(xiě)到nand后即可使用。

啟動(dòng)AM335x 主板之后就可以在屏幕左上方看到自己的Logo了。


8、生成按鍵設(shè)備名keypad的方法

目前有客戶咨詢AM335x系列的開(kāi)發(fā)板上的按鍵設(shè)備名keypad是怎樣生成的,因?yàn)樵趦?nèi)核驅(qū)動(dòng)中找不到相對(duì)應(yīng)的名字。

在內(nèi)核中按鍵的名字使用的是gpio-keys,然后在文件系統(tǒng)中進(jìn)行了一個(gè)系統(tǒng)連接名字就變成了keypad.

具體的文件是/etc/udev/rules.d/local.rules文件

該文件中的以下語(yǔ)句就是生成keypad的鏈接命令

# Create a symlink to any gpio-keys input device

SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{name}=="gpio-keys", SYMLINK+="input/keypad"


9、更改GPIO的方法

1.內(nèi)核中的修改方法見(jiàn)gpio.patch文件。

2.具體的操作讀取數(shù)值的方法

一般可以這樣計(jì)算GPIOn_IOx = n*32 + x

對(duì)gpio3_9進(jìn)行操作。

1)root@ok335x:~#echo 105 > /sys/class/gpio/export

2)root@ok335x:~#cat /sys/kernel/debug/gpio

注冊(cè)了gpio3_9 

可以看到在系統(tǒng)中注冊(cè)了gpio3_9的號(hào)。

3)root@ok335x:~#cat /sys/class/gpio/gpio105/value

低電平的時(shí)候讀到的數(shù)值是0 

電平的時(shí)候讀到的數(shù)值是0

4)root@ok335x:~#cat /sys/class/gpio/gpio105/value

高電平讀到的數(shù)值1 

測(cè)試中可以通過(guò)飛線的方式給AM335x核心板上的gpio3_10的引腳一個(gè)3.3v的高電平讀到的數(shù)值1.

AM335X開(kāi)發(fā)板指示燈 

其中可以把R78電阻拆掉了,防止這個(gè)角其他的信號(hào)對(duì)它造成影響。

R78電阻原理 


10  SPI改成CAN的方法

spi接口是可以修改成can使用的,具體的方法是在內(nèi)核中修改,具體的修改內(nèi)容參考spi_to_can.patch文件

注意:包含頭文件<QWSServer>


11  增加串口的方法

通過(guò)查閱CPU手冊(cè),AM335x平臺(tái)可以最多復(fù)用出6路串口,UART0 – UART5。本次以復(fù)用UART5為例,講解如何在AM335x平臺(tái)添加串口設(shè)備。

AM335x平臺(tái)添加串口設(shè)備 

1、查閱Sitara AM335x ARM Cortex-A8 Microprocessors (MPUs) (Rev. F)手冊(cè),查看該手冊(cè)中球特性的內(nèi)容,該部分列舉了CPU各球號(hào)對(duì)應(yīng)的復(fù)用功能,搜索UART5,找到可復(fù)用為UART5的球號(hào),選擇合適的兩個(gè)球號(hào)(我們CPU用的是zcz的封裝模式),作為uart5_rxd與uart5_txd,如圖MII1_COL在選擇mode3時(shí),功能為uart5_rxd,并對(duì)該引腳做uart5_rxd時(shí)相關(guān)的配置做了定義,比如reset state為低速(L)等等。

從實(shí)際出發(fā),應(yīng)該先考慮核心板是否把與UART5相關(guān)的球號(hào)引出,如果引出,那該引腳是否復(fù)用做其他功能,該功能可否去掉,衡量之后選擇兩個(gè)合適的引腳。

本次選擇mii1_col與rmii1_refclk兩個(gè)引腳,核心板上已經(jīng)引出,但在底板上沒(méi)有引出,需要飛線。

2、該平臺(tái)的串口驅(qū)動(dòng)已經(jīng)調(diào)好,所以只需要修改板級(jí)文件即可。路徑為:

kernel-3.2/arch/arm/mach-omap2/board-am335xevm.c。

該文件中已經(jīng)有UART5的pinmux配置,如下:

static structpinmux_config uart5_pin_mux_s2[] = {

{"mii1_col.uart5_rxd",OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | AM33XX_PIN_INPUT_PULLUP},

{"rmii1_refclk.uart5_txd",OMAP_MUX_MODE3 | AM33XX_PULL_UP | AM33XX_PULL_DISA | AM33XX_SLEWCTRL_SLOW},

// {"mii1_rxerr.uart5_rtsn", OMAP_MUX_MODE5 | AM33XX_PIN_OUTPUT | AM33XX_PULL_ENBL},

// {"mii1_crs.uart5_ctsn",OMAP_MUX_MODE5 | AM33XX_PIN_INPUT_PULLUP},

{NULL,0},

};

注釋:“OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | AM33XX_PIN_INPUT_PULLUP”是對(duì)uart5_rxd引腳的控制狀態(tài)寄存器(CONTROL_MODULE REGISTERS)的配置,這三個(gè)量都是宏定義,具體的含義可在mux.h文件中查到,路徑同為:kernel-3.2/arch/arm/mach-omap2/,通過(guò)解讀,該值為01110011。

控制狀態(tài)寄存器控制狀態(tài)寄存器(CONTROL_MODULE REGISTERS)如何配置要參考CPU手冊(cè),AM335x ARM Cortex-A8 Microprocessors (MPUs) Technical Reference Manual (Rev. H)。該手冊(cè)的第九章中的Table 9-10對(duì)CPU的各引腳的控制狀態(tài)寄存器進(jìn)行了列舉,找到mii1_col,如下圖:

mii1_col 

轉(zhuǎn)到Section 9.3.51,如下圖:

可見(jiàn)該寄存器只有低7位可以設(shè)置,對(duì)應(yīng)mii1_col.uart5_rxd配置的寄存器值為01110011,低三位對(duì)引腳的mode進(jìn)行設(shè)置,mode3為uart5_rxd,其余數(shù)值在球特性部分有介紹,這里就不做詳細(xì)說(shuō)明了。

Section 9.3.51 

將板級(jí)文件里pinmux的定義配置好,再將其添加到uart_init()函數(shù)中,如下:

這樣就完成了UART5的添加。


連載未完待續(xù) 接下篇 :http://www.alphatocol.com/article-new-c22/608.html


 

相關(guān)產(chǎn)品 >

  • FET335xD核心板

    飛凌AM335系列核心板基于TI RM Cortex-A8 架構(gòu) AM335x 微處理器設(shè)計(jì),AM335x核心板整板尺寸47*71mm;AM335X核心板芯片全部采用工業(yè)級(jí)用料;AM335x核心板引腳豐富,引出200pinCPU引腳,原生支持6路UART;AM335x核心板支持市面上主流的操作系統(tǒng),Linux-RT、Linux3.2。更多AM335x系列概述,AM335處理器特點(diǎn)請(qǐng)聯(lián)系在線客服
    了解詳情
    FET335xD核心板
  • OK335xD開(kāi)發(fā)板

    飛凌AM335x開(kāi)發(fā)板已經(jīng)推出幾年,經(jīng)過(guò)行業(yè)檢測(cè),穩(wěn)定性得到肯定。多年行業(yè)積累,AM335x的解決方案涉及各行各業(yè),歡迎進(jìn)店咨詢。飛凌AM335x開(kāi)發(fā)板基于TI Cortex-A8 AM335x CPU設(shè)計(jì)開(kāi)發(fā),主頻800MHz,支持Linux、RTLinux。AM335x開(kāi)發(fā)板工業(yè)級(jí)寬溫,配合豐富的外設(shè)接口,適用于各種惡劣環(huán)境應(yīng)用。 了解詳情
    OK335xD開(kāi)發(fā)板
  • FET335xS核心板

    AM335X是TI(德州儀器)基于 ARM Cortex-A8內(nèi)核的AM335X微處理器在圖像、圖形處理、外設(shè)和諸如 EtherCAT 和 PROFIBUS 的工業(yè)接口選項(xiàng)方面進(jìn)行了增強(qiáng)。飛凌嵌入式提供AM335x核心板,具有小尺寸模塊穩(wěn)定性高等優(yōu)點(diǎn),AM335x核心板接口資源多,滿足硬件開(kāi)發(fā)要求;AM335x工業(yè)級(jí)芯片10年生命周期,供貨有保障。更多AM335x系列概述,AM335x處理器特點(diǎn),歡迎致電咨詢。 了解詳情
    FET335xS核心板
  • OK335xS開(kāi)發(fā)板

    AM335X系列包括AM3352處理器、AM3354、AM3356、AM3357、AM3358、AM3359,都可工作在800Mhz的速度。同時(shí)支持4個(gè)操作系統(tǒng) Linux、RTLinux實(shí)時(shí)操作系統(tǒng),,在圖像、圖形處理、外設(shè)和諸如 EtherCAT 和 PROFIBUS 的工業(yè)接口選項(xiàng)方面進(jìn)行了增強(qiáng)。飛凌OK335xS開(kāi)發(fā)板基于AM335x處理器開(kāi)發(fā),主頻800MHz,郵票孔封裝,體積小。根據(jù)AM335x的性能及功能,飛凌推薦了非常多的解決方案分享。

    保定飛凌嵌入式專注AM335x,am335x 開(kāi)發(fā)板,TI AM335x 等ARM嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn),是AM335x,335x開(kāi)發(fā)板,TI AM335x 提供者, AM335x 系列產(chǎn)品現(xiàn)已暢銷全國(guó),歡迎咨詢!

    了解詳情
    OK335xS開(kāi)發(fā)板

推薦閱讀 換一批 換一批