国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 1093|回復: 0
打印 上一主題 下一主題

AM335x主板18個問題整理及解決思路 第二章(連載)

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2021-4-16 14:05:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: 飛凌嵌入式
本文基于飛凌嵌入式(https://www.forlinx.com/)AM335x嵌入ARM主板為基礎講解,系統采用Linux,以下問題已經在AM335x 主板上做了驗證,通過本文您可以快速解決AM335x平臺一些容易出錯的地方
為便于查詢檢索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地址

注:本文所提到的鏡像、源碼等,請在飛凌提供的下載資料中查詢。

正文開始:接上篇 https://www.forlinx.com/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.斷電重啟


原文鏈接:https://www.forlinx.com/article_view_608.html
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本欧美日韩 | 国产一级大片在线观看 | 日本中文字幕不卡 | 国产欧美日韩综合一区二区三区 | 欧美人成人亚洲专区中文字幕 | 青青青久久 | 91香蕉成人免费高清网站 | 日韩经典欧美精品一区 | 日本中文字幕一区二区 | 在线观看国产黄色 | 热er99久久6国产精品免费 | 日日夜夜拍拍 | 99久热国产精品视频尤物不卡 | 亚洲精品不卡在线 | 麻豆婷婷 | 天天干天天草天天 | jizz亚洲人 | 国产777| 色啪视频 | 日日夜夜中文字幕 | 久久久精品日本一区二区三区 | 91免费小视频 | 日日碰狠狠添天天爽五月婷 | 四虎影视库 | 天天干视频网 | 最好韩国日本高清免费 | 黄页在线看 | 亚洲国产精品免费在线观看 | 国产精品视频免费视频 | 日韩观看 | 久久久久毛片免费观看 | 日韩欧美1区 | 日本在线视频不卡 | 理论亚洲区美一区二区三区 | 91天堂一区二区 | 精品国产一区二区二三区在线观看 | 国产成人精品高清不卡在线 | 黄色片免费在线观看视频 | 天堂激情 | 国产午夜精品一区二区三区小说 | 91啪国产在线 |