AM335x應用筆記-AM335x主板18個問題整理及解決思路 第二章(連載)
為便于查詢檢索AM335x問題,小編列出目錄,請根據您的需查詢。
AM335x 應用筆記
1、AM335x Linux系統自啟運行Qt程序
2、AM335x Qt程序添加背景-
3、AM335x Qt界面應用程序中取消光標的方法
4、AM335x Linux QT視頻打開不能退出問題
5、AM335x 開機LOGO連續顯示的方法
6、AM335x 更改Qt界面 — FORLINX字符串
7、AM335想 更改開機畫面—左上角小企鵝圖標
8、AM335x 生成按鍵設備名keypad的方法
9 、AM335X更改GPIO的方法
10、AM335x SPI改成CAN的方法
11、AM335x 增加串口的方法
12、AM335x解決開發板觸摸不靈敏問題
13、AM335x 添加應用程序到桌面的方法
14、AM335x 解決NAND erase.chip燒寫錯誤的方法
15、AM335x 添加LCD的方法
16、AM335x 系統自動登錄方法
17、AM335x 硬件看門狗開啟方法
18、AM335x 修改MAC地址
注:本文所提到的鏡像、源碼等,請在飛凌提供的下載資料中查詢。
正文開始:接上篇 http://www.powerye.cn/article-new-c22/607.html
12、解決開發板觸摸不靈敏問題
問題描述:
在舊版的OK335x系列開發板觸摸屏和鼠標同時使用時,觸摸屏點擊兩次才有反應。現將解決方法分享給大家。
注:最新版的內核中已經修復了這個問題,大家可以下載最新的內核文件進行操作。
解決辦法:
在內核代碼中修改
diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
index 518b137..7ae6d21 100644
--- a/drivers/input/mousedev.c
+++ b/drivers/input/mousedev.c
@@ -974,7 +974,8 @@ static intmousedev_connect(struct input_handler *handler,
struct mousedev *mousedev;
int minor;
int error;
-
+ if(dev->name == "ft5x0x_ts")
+ return 0;
for (minor = 0; minor < MOUSEDEV_MINORS; minor++)
if (!mousedev_table[minor])
break;
13、添加應用程序到桌面的方法
本方法涉及到的目錄及文件(基于AM335x開發板文件系統源文件):
forlinx/web/lighttpd/webpages/apps/
forlinx/web/lighttpd/webpages/apps/image/
forlinx/web/lighttpd/webpages/shell/
forlinx/web/lighttpd/webpages/json.txt forlinx/qt/bin/
操作步驟:
以建立 hello 為例進行說明
步驟 1:將所要添加的應用程序放到/forlinx/qt/bin 目錄下。
步驟 2:進入forlinx/web/lighttpd/webpages/apps 目錄,建立 hello 文件夾。
步驟 3:在 hello 文件中建立 .desktop 文件(如hello.desktop),當然,你也可以直接 copy 其他目錄的 .desktop 文件到 hello 目錄中,然后對其進行修改。hello.desktop的文件內容:如圖:
如果你是 copy 其他文件進行修改的,那么紅色字體是你要修改的地方
#! /usr/bin/envxdg-open
[Desktop Entry]
Name=Hello
GenericName=Demo App
Icon=/forlinx/web/lighttpd/webpages/apps/images/hello-icon.png xec=/forlinx/web/lighttpd/webpages/shell/hello.sh
Type=Application
ProgramType=gui
修改完成后,保存。
步驟 4:制作一張 96x96 大小的png格式的 image,然后放到 .desktop 文件中所說的位置,即:forlinx/web/lighttpd/webpages/apps/images 并命名為 hello-icon.png(即.desktop 中所寫的圖片名).
步驟 5:進入forlinx/web/lighttpd/webpages/shell 目錄,copy 其中的一個 .sh文件并命名為 hello.sh(.desktop 中所寫的腳本名),對其進行修改(紅色字體為要修改的地方),如圖是修改后的
文件內容及要修改的地方:
#!/bin/sh
if test -e /dev/fb0; then
width=`fbset | grep 'geometry' | awk '{print $2}'`
height=`fbset | grep 'geometry' | awk '{print $3}'`
let height=height-38
geo=`echo $width\x$height+0+0`
fi
pidofmatrix_gui> /dev/null 2>&1
if [ $? == 0 ]
then
/forlinx/qt/bin/hello -geometry $geo $*
else
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0
/forlinx/qt/bin/hello -qws -geometry $geo $*
fi
其實就是將紅色字體的地方修改為所要添加的應用程序的名字。
步驟 6:進入/ forlinx/web/lighttpd/webpages/目錄下,修改 json.txt 文件。在文件末尾添加這些內容(copy 前面的內容,然后在進行修改): {"Name":"Hello","Order":999,"Icon":"apps\/images\/hello-icon.png","Type":"applica tion","Exec":"\/forlinx\/web\/lighttpd\/webpages\/shell\/hello.sh","ProgramType":" gui","Description_Link":-1,"Lock":-1}
然后保存。
OK,要修改的就這些,接下來,重新制作文件系統鏡像,然后燒寫并啟動AM335x主板,你就可以看到自己的應用程序已經添加上去了。
14、解決NAND erase.chip燒寫錯誤的方法
問題:AM335x系列產品燒寫Linux時出現NAND erase.chip :device 0 whole chip 之后,不能進行批量燒寫和nand啟動
解決辦法:
第一步:參考手冊中SD燒寫卡制作步驟制作一張Win CE的燒寫卡
第二步:撥碼開關撥到SD卡燒寫狀態,開機,在終端上會出現文后打印信息,打印到Flash format complete!即可;
15、添加LCD的方法
以AM335x主板添加10.1吋屏為例
uboot 部分:
uboot-2011-09/drivers/video/da8xx-fb.c中
仿照其他屏幕的時鐘參數結構體,按照屏體手冊,添加10.1吋屏的結構體如下:
static struct da8xx_panel g_panel_11 = {
.name = "NHD-10.1-ATXI#-T-1",
.width = 1024,
.height = 600,
.hfp = 28,
.hbp = 158,
.hsw = 136,
.vfp = 3,
.vbp = 28,
.vsw = 5,
.pxl_clk = 64000000,
.invert_pxl_clk = 0,
};
在void *video_hw_init(void)函數中增加該結構體的判斷選擇語句,如下
else if(!strcmp(ss,"1024x600-11"))
pp = &g_panel_11;
如何在uboot階段選擇添加的10.1吋屏,這里有兩種方法:
1、將其設置為默認的屏幕參數
在uboot-2011-09/include/configs/ok335x.h,修改環境變量配置,如下
#if 1
#define CONFIG_EXTRA_ENV_SETTINGS \
CON \
"screentype=R\0"\
"screensize=1024x600-11\0"\
"calibrate=Y\0"\
"laohua=N\0"\
2、將該屏幕添加到uboot菜單中,供選擇使用
修改uboot-2011-09/common/cmd_scr.c,仿照其他選項,添加10.1吋屏的選項,如下:
intscreen_size_menu()
{
char c;
do
{
printf("current screen size is `%s`\n",getenv("screensize"));
printf("AAAxAAA-B means Binch screen with AAAxAAA pixels\n");
printf("---------------------screen type----------------------\n");
printf("0 -- exit to upper menu\n");
printf("1 -- 480x272-4\n");
printf("2 -- 800x480-5\n");
printf("3 -- 800x480-7\n");
printf("4 -- 800x600-8\n");
printf("5 -- 800x600-10\n");
printf("6 -- 1280x720-vga\n");
printf("7 -- 1024x768-vga\n");
printf("8 -- 800x600-vga\n");
printf("9 -- 320x240-3\n");
printf("a -- 1024x600-11\n");
printf("------------------------------------------------------\n");
switch(c)
{
case '0':
return 0;
break;
case '1':
setenv("screensize","480x272-4");
break;
case '2':
setenv("screensize","800x480-5");
break;
case '3':
setenv("screensize","800x480-7");
break;
case '4':
setenv("screensize","800x600-8");
break;
case '5':
setenv("screensize","800x600-10");
break;
case '6':
setenv("screensize","1280x720-vga");
break;
case '7':
setenv("screensize","1024x768-vga");
break;
case '8':
setenv("screensize","800x600-vga");
break;
case '9':
setenv("screensize","320x240-3");
break;
case 'a':
setenv("screensize","1024x600-11");
break;
內核部分:
注意:uboot會給內核傳遞屏幕參數,注意屏幕參數設置一致,否則顯示不正常。
kernel-3.2/arch/arm/mach-omap2/ board-am335xevm.c
添加屏幕的宏定義,如下:
#define SCREEN_TYPE_R 0
#define SCREEN_TYPE_C 1
#define SCREEN_SIZE_800X480_5 0
#define SCREEN_SIZE_800X480_7 1
#define SCREEN_SIZE_800X600_8 2
#define SCREEN_SIZE_480X272_4 3
#define SCREEN_SIZE_800X600_10 4
#define SCREEN_SIZE_1280X720_vga 5
#define SCREEN_SIZE_1024X768_vga 6
#define SCREEN_SIZE_800X600_vga 7
#define SCREEN_SIZE_1024X600_11 8
類比其他屏幕添加結構體如下:
struct da8xx_lcdc_platform_data NHD_1024600MF_ATXI_pdata_11 = {
.manu_name = "NHD",
.controller_data = &lcd_cfg,
.type = "NHD-10.1-ATXI#-T-1",
};
在static void lcd_init(intevm_id, int profile)函數中增加該結構體的判斷選擇語句,如下:
static void lcd_init(intevm_id, int profile)
{
......
else if(screen_size == SCREEN_SIZE_1024X768_vga)
lcdc_pdata = &NHD_1024768MF_ATXI_pdata_vga;
else if(screen_size == SCREEN_SIZE_1024X600_11)
lcdc_pdata = &NHD_1024600MF_ATXI_pdata_11;
else if(screen_size == SCREEN_SIZE_640X480_5)
lcdc_pdata = &NHD_640480MF_ATXI_pdata_5;
......
kernel-3.2/drivers/video/da8xx-fb.c
在static struct da8xx_panel known_lcd_panels[]中,仿照其他屏幕,按照屏體手冊添加10.1吋屏的時鐘參數,如下:
[14] = {
.name = "NHD-10.1-ATXI#-T-1",
.width = 1024,
.height = 600,
.hfp = 28,
.hbp = 158,
.hsw = 136,
.vfp = 3,
.vbp = 28,
.vsw = 5,
.pxl_clk = 64000000,
.invert_pxl_clk = 0,
},
該結構體的屏幕時鐘參數會傳給板級文件的中的10.1吋屏的結構體,最終傳遞給lcd初始化函數。
文件系統:
rootfs/etc/init.d/qt.sh
需要在qt系統的啟動腳本中增加與屏體尺寸對應的環境變量,如下:
if [ $FB_SIZE = "800,1200" ]; then
export QWS_SIZE=800x600
elif [ $FB_SIZE = "1280,1440" ]; then
export QWS_SIZE=1280x720
elif [ $FB_SIZE = "1024,1536" ]; then
export QWS_SIZE=1024x768
else
export QWS_SIZE=800x480 /*默認為800x480*/
fi
export QWS_SIZE=1024x600
16、系統自動登錄方法
系統啟動后自動登錄root賬戶
本次更新解決不能使用ctrl+c。
將inittab中
#S:2345:respawn:/sbin/getty 115200 ttyO0
改為如下
S2:2345:respawn:/sbin/getty -n -l /usr/sbin/autologin 115200 ttyO0
并將autologin 放到/usr/sbin/ 目錄下。
17、硬件看門狗開啟方法
1、cpu外置看門狗開啟方法
修改 /etc/init.d/qt.sh 文件,添加
/usr/sbin/sp706p_wdt on &
2、cpu自帶看門狗開啟使用方法
修改 /etc/init.d/qt.sh 文件,添加
/forlinx/bin/watchdogtest&
18、修改MAC地址
此問題針對基于于AM335x設計充電樁計費控制單元
1.充電樁的資產文件一定要先拷貝出來。
2.確認原來核心板的MAC地址
root@ok335x:~# ifconfig
其中eth0的MAC地址是:04:A3:16:F9:AF:99
同理:eth1的MAC地址是08:90:90:90:90:90
3.在新的板子的文件系統修改MAC地址
root@ok335x:~# cd /etc/init.d/
root@ok335x:/etc/init.d# vi rcS
在以下添加代碼:
trap ":" INT QUIT TSTP
#
# Call all parts in order.
#
ifconfig eth0 down
ifconfig eth1 down
ifconfig eth0 hw ether 04:A3:16:F9:AF:99
ifconfig eth1 hw ether 08:90:90:90:90:90
ifconfig eth0 up
ifconfig eth1 up
exec /etc/init.d/rcS
退出保存
root@ok335x:/etc/init.d#sync
4.斷電重啟
相關產品 >
-
FET335xD核心板
飛凌AM335系列核心板基于TI RM Cortex-A8 架構 AM335x 微處理器設計,AM335x核心板整板尺寸47*71mm;AM335X核心板芯片全部采用工業級用料;AM335x核心板引腳豐富,引出200pinCPU引腳,原生支持6路UART;AM335x核心板支持市面上主流的操作系統,Linux-RT、Linux3.2。更多AM335x系列概述,AM335處理器特點請聯系在線客服
了解詳情 -
OK335xD開發板
飛凌AM335x開發板已經推出幾年,經過行業檢測,穩定性得到肯定。多年行業積累,AM335x的解決方案涉及各行各業,歡迎進店咨詢。飛凌AM335x開發板基于TI Cortex-A8 AM335x CPU設計開發,主頻800MHz,支持Linux、RTLinux。AM335x開發板工業級寬溫,配合豐富的外設接口,適用于各種惡劣環境應用。 了解詳情 -
FET335xS核心板
AM335X是TI(德州儀器)基于 ARM Cortex-A8內核的AM335X微處理器在圖像、圖形處理、外設和諸如 EtherCAT 和 PROFIBUS 的工業接口選項方面進行了增強。飛凌嵌入式提供AM335x核心板,具有小尺寸模塊穩定性高等優點,AM335x核心板接口資源多,滿足硬件開發要求;AM335x工業級芯片10年生命周期,供貨有保障。更多AM335x系列概述,AM335x處理器特點,歡迎致電咨詢。 了解詳情 -
OK335xS開發板
AM335X系列包括AM3352處理器、AM3354、AM3356、AM3357、AM3358、AM3359,都可工作在800Mhz的速度。同時支持4個操作系統 Linux、RTLinux實時操作系統,,在圖像、圖形處理、外設和諸如 EtherCAT 和 PROFIBUS 的工業接口選項方面進行了增強。飛凌OK335xS開發板基于AM335x處理器開發,主頻800MHz,郵票孔封裝,體積小。根據AM335x的性能及功能,飛凌推薦了非常多的解決方案分享。
保定飛凌嵌入式專注AM335x,am335x 開發板,TI AM335x 等ARM嵌入式核心控制系統研發、設計和生產,是AM335x,335x開發板,TI AM335x 提供者, AM335x 系列產品現已暢銷全國,歡迎咨詢!
了解詳情