五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

嵌入式Linux開發(fā)中串口驅(qū)動有問題該怎么調(diào)

2020-07-21 22:11 作者:韋東山  | 我要投稿

有很多人問我,為什么不錄串口驅(qū)動?

實際上串口裸板很簡單,但是串口驅(qū)動還是挺復(fù)雜的;

另外基本上所有芯片的內(nèi)核源碼中基本上都會有串口驅(qū)動。

所以我認為對于串口,我們只要會APP編程即可,不需要去寫它的驅(qū)動程序。

現(xiàn)在有2個問題:

1.怎么寫串口APP?

2.如果串口驅(qū)動有問題,怎么調(diào)?

第1個問題挺簡單,百度搜搜就可以找到源碼。

但是向我提問的人還是非常非常多,

我干脆寫一個示例代碼好了:serial_test.c

這個程序會一邊往串口中寫入數(shù)據(jù)0x5A,一邊從串口中讀出數(shù)據(jù)并打印出來。

用法為:

a. 編譯:

arm-linux-gcc -o serial_test serail_test.c -static

b. 在開發(fā)板上運行:

./serial_test </dev/XXX> // /dev/XXX為串口的設(shè)備節(jié)點

比如在jz2440的3.4.2內(nèi)核上:

./serial_test /dev/ttySAC1

比如在jz2440的2.6.22.6內(nèi)核上:

./serial_test /dev/s3c2410_serial1

c. 然后用鑷子短接串口的TXD、RXD引腳,即可看到這個程序不斷打印0x5a:這表明測試成功

第2個問題:總有一些不太完善的驅(qū)動程序需要我們稍微調(diào)整。

比如jz2440用的linux 3.4.2內(nèi)核,它的/dev/ttySAC2無法使用。

需要修改2個文件,mach-smdk2440.c和samsung.c,這些文件的源碼我一起打包上傳,需要代碼聯(lián)系我即可。

下面講解。

解決方法為:

a. 修改內(nèi)核 arch/arm/mach-s3c24xx/mach-smdk2440.c

找到”ulcon = 0x43;” 改為 “ulcon = 0x03;”

2440的串口2可以用作紅外接收或發(fā)送, 我們要把它改為一般的串口。

b. 修改內(nèi)核 drivers/tty/serial/samsung.c

對于串口2,該文件中沒有配置對應(yīng)的GPIO用于串口。

修改方法如下:

b.1 在前面添加頭文件:

#include <mach/regs-gpio.h>
#include <plat/gpio-cfg.h>

b.2 在s3c24xx_serial_startup函數(shù)中加入:

if (ourport->cfg->hwport == 0)
{
printk(“config pin for uart %d\n”, ourport->cfg->hwport);
s3c_gpio_cfgpin(S3C2410_GPH(2), S3C2410_GPH2_TXD0);
s3c_gpio_cfgpin(S3C2410_GPH(3), S3C2410_GPH3_RXD0);
}
else if (ourport->cfg->hwport == 1)
{
printk(“config pin for uart %d\n”, ourport->cfg->hwport);
s3c_gpio_cfgpin(S3C2410_GPH(4), S3C2410_GPH4_TXD1);
s3c_gpio_cfgpin(S3C2410_GPH(5), S3C2410_GPH5_RXD1);
}
else if (ourport->cfg->hwport == 2)
{
printk(“config pin for uart %d\n”, ourport->cfg->hwport);
s3c_gpio_cfgpin(S3C2410_GPH(6), S3C2410_GPH6_TXD2);
s3c_gpio_cfgpin(S3C2410_GPH(7), S3C2410_GPH7_RXD2);
}


嵌入式Linux開發(fā)中串口驅(qū)動有問題該怎么調(diào)的評論 (共 條)

分享到微博請遵守國家法律
泽库县| 宣汉县| 泸定县| 九龙县| 乌拉特前旗| 南宁市| 黄石市| 宜宾县| 海原县| 射洪县| 虎林市| 依安县| 华宁县| 句容市| 屏山县| 呼图壁县| 普格县| 黄骅市| 阳城县| 白银市| 禹州市| 福州市| 神农架林区| 博兴县| 绵竹市| 丹东市| 舟山市| 亳州市| 惠州市| 阿克苏市| 建瓯市| 城市| 沧州市| 巴南区| 信宜市| 临湘市| 隆回县| 桦甸市| 津市市| 吉安县| 海阳市|