最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

如果串口驅(qū)動(dòng)有問(wèn)題,怎么調(diào)?

2018-07-23 16:21 作者:韋東山  | 我要投稿

有很多人問(wèn)我,為什么不錄串口驅(qū)動(dòng)?

實(shí)際上串口裸板很簡(jiǎn)單,但是串口驅(qū)動(dòng)還是挺復(fù)雜的;


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

所以我認(rèn)為對(duì)于串口,我們只要會(huì)APP編程即可,不需要去寫(xiě)它的驅(qū)動(dòng)程序。


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

1.怎么寫(xiě)串口APP?

2.如果串口驅(qū)動(dòng)有問(wèn)題,怎么調(diào)?


第1個(gè)問(wèn)題挺簡(jiǎn)單,百度搜搜就可以找到源碼。


但是向我提問(wèn)的人還是非常非常多,

我干脆寫(xiě)一個(gè)示例代碼好了:serial_test.c

這個(gè)程序會(huì)一邊往串口中寫(xiě)入數(shù)據(jù)0x5A,一邊從串口中讀出數(shù)據(jù)并打印出來(lái)。


用法為:

a. 編譯: arm-linux-gcc -o serial_test serail_test.c -static

b. 在開(kāi)發(fā)板上運(yùn)行: ./serial_test </dev/XXX> // /dev/XXX為串口的設(shè)備節(jié)點(diǎn)


比如在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引腳,即可看到這個(gè)程序不斷打印0x5a:這表明測(cè)試成功


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


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


需要修改2個(gè)文件,mach-smdk2440.c和samsung.c,這些文件的源碼我一起打包上傳,需要這些代碼請(qǐng)聯(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

對(duì)于串口2,該文件中沒(méi)有配置對(duì)應(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);
}


如果串口驅(qū)動(dòng)有問(wèn)題,怎么調(diào)?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阿城市| 弥渡县| 北流市| 遂宁市| 松江区| 灯塔市| 舟山市| 青冈县| 改则县| 石家庄市| 宽甸| 巫山县| 泰兴市| 嘉峪关市| 吉木萨尔县| 江油市| 同心县| 盖州市| 汪清县| 天祝| 兴业县| 辽中县| 西贡区| 肥西县| 黎川县| 宜阳县| 瓦房店市| 浦北县| 邵武市| 尚义县| 阳城县| 五河县| 建平县| 博湖县| 巴马| 宁河县| 昌江| 农安县| 年辖:市辖区| 合作市| 青海省|