光盤m3352工控核心板-n128li用戶手冊-v1_第1頁
光盤m3352工控核心板-n128li用戶手冊-v1_第2頁
光盤m3352工控核心板-n128li用戶手冊-v1_第3頁
光盤m3352工控核心板-n128li用戶手冊-v1_第4頁
光盤m3352工控核心板-n128li用戶手冊-v1_第5頁
已閱讀5頁,還剩74頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、M3352-Date:產(chǎn) 類內(nèi)AM3352,Linux,M3352-Date:產(chǎn) 類內(nèi)AM3352,Linux,CAN,Ethernet、RS232、摘 M3352-M3352-iM3352-iM3352-目錄評估套件簡參系統(tǒng)基本操M(fèi)3352-目錄評估套件簡參系統(tǒng)基本操關(guān)Qt演示程觸摸屏和USB鼠USB鍵SSH文件傳NFS文件傳U盤使SD/MMC卡使音U-Boot交LCD待機(jī)設(shè)LCD背光調(diào)文件系應(yīng)用程序開Linux開發(fā)一般方1M3352-NFS服務(wù)器配o程I/O端口使SocketM3352-NFS服務(wù)器配o程I/O端口使SocketCAN編初始化CAN網(wǎng)絡(luò)接socketcan編概范5.QT4

2、編Qt介Qt簡Qt/E簡編譯Qt-4.7.3源碼o o 程o程qmake與pro文pro文件例pro文件常見配桌面版本的QtSDK使用簡桌面版本QtSDK簡桌面版本QtSDK的安QtCreator配QtCreator使用例o zylauncher圖形框6. 基于Web的系統(tǒng)控制頁登7. 系統(tǒng)恢復(fù)和更制作SD燒寫Linux固2M3352-其M3352-其3M3352-1. 1.1 M3350_EV_Board 4RS232串口、2路RS485口,4路USBHost2.0接口,1路USBOTG、110/100M以太網(wǎng)接口、1以太網(wǎng)接口、2CAN 接口、1 SD 卡接口,124M3352-1. 1.

3、1 M3350_EV_Board 4RS232串口、2路RS485口,4路USBHost2.0接口,1路USBOTG、110/100M以太網(wǎng)接口、1以太網(wǎng)接口、2CAN 接口、1 SD 卡接口,124TFT 液晶接1.1 所示。USB Host 網(wǎng)卡網(wǎng)卡USB Host BootUSB 板功能跳線 1.1 M3350_EV_Board評估套件外1.11.1M3350_EV_Board1RS232 RS232 RS232 M3352-1.2 1.21.2M3352-2AM3352(Cortex-A8內(nèi)核128MB 256MBSLC24 TFT4 6 路(1 路調(diào)試串口USB1 路,USB2.0

4、USB1路,USB2.0 CAN2 2路,10/100M 1 I2SM3352-1.2 1.21.2M3352-2AM3352(Cortex-A8內(nèi)核128MB 256MBSLC24 TFT4 6 路(1 路調(diào)試串口USB1 路,USB2.0 USB1路,USB2.0 CAN2 2路,10/100M 1 I2SLinuxSD 1 1 RS485 RS485 Linux24 4 USBHOSTUSBHOSTUSBSD Boot NANDSDM3352-1.3 M3352- M3352-1.3 M3352- NANDFlash顯示驅(qū)動(dòng)程序(TFT液晶屏; USBHostUSB鍵盤、USB鼠標(biāo)和U

5、CAN-Bus驅(qū)動(dòng)程序(SocketCAN接口;10/100/1000M 自適應(yīng)以太網(wǎng)驅(qū)動(dòng)程序; RS-232C/RS-485 接口驅(qū)動(dòng)程序;RTC 驅(qū)動(dòng)程序; GPIO 驅(qū)動(dòng)程序;ADC35 4 M3352-2. 2.1 M3352-N128LI支持從NANDSDJP6JP62.12.1 M3352-2. 2.1 M3352-N128LI支持從NANDSDJP6JP62.12.1 Linux2.2 2.34M3352-2.3 設(shè)置為“115200,8N12.4 M3352-2.3 設(shè)置為“115200,8N12.4 所示。2.4 2.55M3352-2.5 S界2.62.6 Linux M3

6、352-2.5 S界2.62.6 Linux 6M3352- M3352- 2.72.7 SSHOpen“root 2.8 SSH登錄Linux2.2 7rootM3352ThesystemisgoingdownNOW! Sent SIGTERM to all proM3352-2.3 QtM3352-N128LI包含支持Qt4.7.3,默認(rèn)啟動(dòng)演示程序(需要外接液晶可能不需要該演示程序,可以刪除Qt 2.4 USB M3352-2.3 QtM3352-N128LI包含支持Qt4.7.3,默認(rèn)啟動(dòng)演示程序(需要外接液晶可能不需要該演示程序,可以刪除Qt 2.4 USB USB插上USBUSB2

7、.5 8rootM3352#df rootM3352 # dfAvailable Use% Mountedubi0 16.8M rootM3352#free rootM3352# -/+ rootM3352#uname-LinuxM33523.2.0#134ThuAug815:47:17 CST2013armv7lrootM3352 wrrmSentSIGKILLtoallRequesting systemSystemhalted.M3352-CPU2.6 IP M3352-CPU2.6 IP MAC MAC(MACMACIEEE00-14-97開頭 MAC:。 9rootM3352# ifc

8、onfigeth0 hwether rootM3352# eepromnetset ip rootM3352 echo 4eEraseNANDBurnallBurnBurnBurnrq exitto U-Boot2011.09-00000-gc32c12a-dirty(Aug262013 -DRAM: 256MiBWARNING:CachesnotNAND: HWECCHammingCodeselected 256 MiBOMAPSD/MMC:Autobootingin1seconds.Enterzlgerrupt rootM3352 aplayM3352-2.13 LCDM3352-N128

9、LI 支持背光調(diào)節(jié), 可根據(jù)實(shí)際需要進(jìn)行調(diào)整。操作接口為 占01002.14 M33524ADC輸入,在底板上的絲印為AI4AI7,可通過一個(gè)可調(diào)電位器做為AIn 獲取電位器的值。系統(tǒng)提供/sys 文件系統(tǒng)接口操作 ADC,在/iio:device0 in_voltage4_rawM3352-2.13 LCDM3352-N128LI 支持背光調(diào)節(jié), 可根據(jù)實(shí)際需要進(jìn)行調(diào)整。操作接口為 占01002.14 M33524ADC輸入,在底板上的絲印為AI4AI7,可通過一個(gè)可調(diào)電位器做為AIn 獲取電位器的值。系統(tǒng)提供/sys 文件系統(tǒng)接口操作 ADC,在/iio:device0 in_voltag

10、e4_raw in_voltage7_raw44AI4AI7 4ADC12Bit 精度,因而,AIn 04095。AIn 2.15 M3352系統(tǒng)自帶一個(gè)串口測試ttyO138400M3352ttyO1PC 然后在終端輸入字符,在PC 測試485也是同令只是需要通過一個(gè)RS485-232的轉(zhuǎn)換模塊將M3352的PCrootM3352-t 3000-s 38400 -dDELAY-tTIMEOUT-sSPEED-XVIn電壓值=(rootM3352 # cat /sys/bus/iio/devirootM3352#catrootM3352# echo70 -U-Boot#setenvoptarg

11、sU-Boot#ruM3352-3. MTD3.13.1NANDFlash 3.2 系統(tǒng)支持多種常見文件系統(tǒng),如 ext2、M3352-3. MTD3.13.1NANDFlash 3.2 系統(tǒng)支持多種常見文件系統(tǒng),如 ext2、fat rootM3352#cat/proc/filesystems rootM3352#cat/proc/filesystems nodev sysfsnodev SPLLinuxLinux內(nèi)核(備份File/optrootM3352 # cat /proc/mtd erasesize name mtd0:0008000000020000mtd1:0020000000

12、020000U-mtd2:0040000000020000mtd3:0040000000020000mtd4:0010000000020000mtd5:0400000000020000Filemtd6:0b48000000020000M3352-3.3 建議用戶用戶程序須安裝在/opt 目錄下,在/opt /opt MTD WEB 6.43.4 系統(tǒng)啟動(dòng)過程中會(huì)掃描/etc/ini.dM3352-3.3 建議用戶用戶程序須安裝在/opt 目錄下,在/opt /opt MTD WEB 6.43.4 系統(tǒng)啟動(dòng)過程中會(huì)掃描/etc/ini.d 目錄下所有以“S/etc/init.d S+|#|#|#

13、|#|#M3352- 序 M3352- 序 S90qt vi wr,實(shí)現(xiàn)對文件的修改。例如要修改rootM3352# wr vi rootM3352# wr cp S90qt /opt/myapp/startmyapp exportyappM3352-4. 4.1 Linux 序圖 Linux4.2PC圖 LinuxLinux NFSNFSNFS NFSM3352-4. 4.1 Linux 序圖 Linux4.2PC圖 LinuxLinux NFSNFSNFS NFS M3352- 安裝工具鏈只需將壓縮包進(jìn)行解壓,并設(shè)置環(huán)境變量即可。解壓后生成arm-2011.03目bin arm-none-

14、linux-gnueabi-gcc、arm-none-linux-gnueabi-g+的安 裝 在 /home/ctools/arm-2011.03 具體設(shè)置方法:修改/.bashrcM3352- 安裝工具鏈只需將壓縮包進(jìn)行解壓,并設(shè)置環(huán)境變量即可。解壓后生成arm-2011.03目bin arm-none-linux-gnueabi-gcc、arm-none-linux-gnueabi-g+的安 裝 在 /home/ctools/arm-2011.03 具體設(shè)置方法:修改/.bashrcPATH變量中增加交叉編譯工具鏈的安裝路徑,然后運(yùn)行/.bashrc 文件,使設(shè)置生效。 . . .bas

15、hrcarm-none-TABarm-none-linux-gnueabi-前綴的編寫一個(gè)簡單的應(yīng)用程序文件o.c,然后在終端輸入arm-none-linux-gnueabi-o.c-oofileo程序是ARM 格式的文件,arm-none-linux-gnueabi-工piler:$ arm-none-linux-gnueabi-o.c-piler: $ o$ o: ELF 32-bit LSB executable, ARM, ver1 (SYSV), dynamically linked (uses shared libs), f2.6.16, not strippedpiler:$ a

16、rm-none-linux- #UserspecificenvironmentandstartupPATH=$PATH/home/ctools/arm-2011.03 M3352-NFS SystemC/SLinuxNFS和使用。通過 NFS 添加NFS修改/etc/exportsNFS目錄(rootsudoM3352-NFS SystemC/SLinuxNFS和使用。通過 NFS 添加NFS修改/etc/exportsNFS目錄(rootsudo)IP如增加/home/chenxibing/nfsIP192.168.1.*,啟動(dòng)NFS / NFSexportsrvNFS測試NFSNFS共享目

17、錄mount 如果指令運(yùn)行沒有出出錯(cuò), 則 NFS 掛載成功, 在/mnt 目錄下應(yīng)該可以看到 mountrootM3352#ifconfigeth036 rootM3352 #rootM3352#mount-tnfs38:/home/chenxibing/nfs/mnt-o# mount -t nfs 38:/home/chenxibing/nfs piler:$ sudoexportfs -piler:$sudo/etc/init.d/nfs-kernel-serverpiler:$ sudovi sudopasswordf

18、orM3352-NFSRPCNFSportmap服務(wù),如果出現(xiàn)“RPC: portmapo 4.1o o.co$aM3352-NFSRPCNFSportmap服務(wù),如果出現(xiàn)“RPC: portmapo 4.1o o.co$aarm-arago-linux-gnueabi-o.c-oo ooocpo o#o rootM3352# mount-tnfs38:/home/chenxibing/nfs/mnt-onolock rootM3352 # cd /mnt/o# ./ o 0!#includestdiofor(i=0;iexport rootM3352 gpio# cd

19、gpio113rootM3352gpio113#echooutrootM3352gpio117#echoinrootM3352gpio1117#cat1rootM3352gpio117#echooutrootM3352gpio117#echo1rootM3352gpio117#echo0rootM3352gpio#cdgpio117/ rootM3352 gpio117# lsrootM3352gpio#echo117rootM3352gpio# gpiochip160 gpiochip128 subsystemM3352-4.5 M3350_EVM_Board 5 Linux 系統(tǒng)中的設(shè)備名

20、稱如表 4.2 4.2 需要先打開串口設(shè)備文件,獲得串口設(shè)備文件描述符 fd /dev/ttyOn(3 4.3M3352-4.5 M3350_EVM_Board 5 Linux 系統(tǒng)中的設(shè)備名稱如表 4.2 4.2 需要先打開串口設(shè)備文件,獲得串口設(shè)備文件描述符 fd /dev/ttyOn(3 4.34.3 open O_RDWRO_NOCTTTY Linux fd=open(/dev/ttyO1,O_RDWR|O_NOCTTY |fd=open(“/dev/ttyOn”,O_RDWR|O_NOCTTY|O_NDELAY); if(iFd 0) 3 3 3 rootM3352gpio113ec

21、ho0value #rootM3352gpio113echo1value #M3352- 4.4 read 系統(tǒng)調(diào)用都返回串口驅(qū)動(dòng)緩沖區(qū)里實(shí)際 open(帶O_NDELAY選項(xiàng)) M3352- 4.4 read 系統(tǒng)調(diào)用都返回串口驅(qū)動(dòng)緩沖區(qū)里實(shí)際 open(帶O_NDELAY選項(xiàng)) 4.54.5 termiosstructtermiostcflag_t /* 控制標(biāo)tcflag_t /* 輸入標(biāo)tcflag_t /* 輸出標(biāo)tcflag_t /* 本地標(biāo)tcflag_t /* 控制字fcntl(fd,F_SETFL,fcntl(fd,F_SETFL,n=write(fd,hollowzlgr,

22、14); if (n 0) pr f(writeoserialfailed!M3352-tr和tr可以獲得或設(shè)置termios結(jié)構(gòu),如程4.6程4.6 設(shè)置和獲得termios結(jié)構(gòu)函上述兩函數(shù)執(zhí)行時(shí),若成功中則返回 0,若出錯(cuò)則返回-1。這兩個(gè)函數(shù)都有一個(gè)指向 termios 結(jié)構(gòu)的指針作為其參數(shù),它們返回當(dāng)前串口的屬性,或者設(shè)置該串口的屬性??赡苓€存在,這時(shí)需要考慮到更改后的屬性什么時(shí)候起作用。tcse tr opt 使 可以指定在什么時(shí)候新的串口屬性才起作用。opt 可以指定為下列常量中的一個(gè):M3352-tr和tr可以獲得或設(shè)置termios結(jié)構(gòu),如程4.6程4.6 設(shè)置和獲得termi

23、os結(jié)構(gòu)函上述兩函數(shù)執(zhí)行時(shí),若成功中則返回 0,若出錯(cuò)則返回-1。這兩個(gè)函數(shù)都有一個(gè)指向 termios 結(jié)構(gòu)的指針作為其參數(shù),它們返回當(dāng)前串口的屬性,或者設(shè)置該串口的屬性??赡苓€存在,這時(shí)需要考慮到更改后的屬性什么時(shí)候起作用。tcse tr opt 使 可以指定在什么時(shí)候新的串口屬性才起作用。opt 可以指定為下列常量中的一個(gè): 4.3表 c_cflag0 位/秒(掛起100 位/134 位/1200 位/2400 位/4800 位/9600 位/19200 位/57600 位/115200 位/460800 位/5 6 #includetermiostcge fd,structtermio

24、stcse opt,conststructtermios M3352-c_cflag 成員有兩選項(xiàng)通常是要啟用的:CLOCAL CREADtermios 各成員的各個(gè)選項(xiàng)標(biāo)志( 4.7tcge trtr#includeM3352-c_cflag 成員有兩選項(xiàng)通常是要啟用的:CLOCAL CREADtermios 各成員的各個(gè)選項(xiàng)標(biāo)志( 4.7tcge trtr#includetermiosstructtermiosterm; fd=open(/dev/ttyS0,O_RDWR|O_NOCTTY); if(iFd 0) if(tcge tr(fd,&term)0) pr f(tcge tr er

25、ror); switch(term.c_cflag&CSIZE)7 8 2 1 M3352- 4.8 設(shè)置串口輸入/termiosM3352- 4.8 設(shè)置串口輸入/termios結(jié)構(gòu)中的。在cfsettcge trtermios結(jié)構(gòu)。與此類似,在調(diào)用任一 cfset termios tr4.9#includetermioscfsetispeed(structtermios*termptr,speed_tspeed); cfsetospeed(structtermios*termptr,speed_tcasepr f(5bits/byten); casepr f(6bits/byten); c

26、asepr f(7bits/byten); casepr f(8bits/byten); pr f(unknown bits/byte term.c_cflag&=CSIZE; term.c_cflag |= CS8;if(tcse tr(fd,TCSANOW,&term)0) pr f(tcse tr error);returnM3352-4.9 標(biāo)志 7位數(shù)據(jù)位奇偶校驗(yàn)M3352-4.9 標(biāo)志 7位數(shù)據(jù)位奇偶校驗(yàn)options.c_cflag |= PARENB; options.c_cflag |= PARODD; options.c_cflag &= CST options.c_cfl

27、ag &= CSIZE;options.c_cflag|=options.c_cflag |= PARENB; options.c_cflag&=PARODD; options.c_cflag &= CST options.c_cflag &= CSIZE;options.c_cflag|=options.c_cflag&=PARENB; options.c_cflag&=CST ; options.c_cflag &= CSIZE;options.c_cflag|=options.c_cflag&=/* 先把數(shù)據(jù)位清options.c_cflag|=/* 把數(shù)據(jù)位設(shè)置為8 if(tcge t

28、r(fd,&opt)0) return ERROR;cfsetispeed(&opt, B9600); cfsetospeed(&opt,if (tcse tr(fd,&opt)0) M3352- 4.4c_lflag表 c_lflagICANON、ECHO和ECHOEICANON、ECHO、ECHOE ISIG 選項(xiàng):c_iflag4.5c_iflag4.5 c_iflagM3352- 4.4c_lflag表 c_lflagICANON、ECHO和ECHOEICANON、ECHO、ECHOE ISIG 選項(xiàng):c_iflag4.5c_iflag4.5 c_iflagoptions.c_lfla

29、g&=(ICANON |ECHO |ECHOE |options.c_lflag|=(ICANON |ECHO |規(guī)范大/kill回送控制字符為Kill 對輸出發(fā)送M3352- KISTRIP這里有個(gè)選項(xiàng)值得注意:IGNPARIGNPAR 設(shè)置 使 4.6M3352- KISTRIP這里有個(gè)選項(xiàng)值得注意:IGNPARIGNPAR 設(shè)置 使 4.6 c_oflagCR CR options.c_iflag&=(IXON |IXOFF |options.c_iflag|=(IXON |IXOFF |options.c_iflag|=K|8 啟用/啟用/BREAKNLCR M3352-c_oflag

30、成員啟用TT 間。c_cc4.7c_cc4.7 c_ccVMIN和M3352-c_oflag成員啟用TT 間。c_cc4.7c_cc4.7 c_ccVMIN和 c_ccVMIN和VTIME MIN0,TIME0MINreadMINMIN的最小字符options.c_oflag&=options.c_oflag|=NLCR-NLCR 0 M3352-read 返回已接收到的字節(jié)(因?yàn)橹挥性诮邮盏降谝粋€(gè)字節(jié)時(shí)才啟動(dòng),所 readreadM3352-read 返回已接收到的字節(jié)(因?yàn)橹挥性诮邮盏降谝粋€(gè)字節(jié)時(shí)才啟動(dòng),所 readread后數(shù)據(jù)立即被接到一MIN0,TIME0 MIN0,TIME0 TI

31、MEread(與第一種情形是不同的,在第一種情形read 0。MIN0,TIME0readread立即返0。 程4.10 串口程序示#include #include #include #include #include sys/s #include #include #include #include #define DEV_NAMEiFd,i; unsignedcharucBuf1000; struct termios opt;iFd=open(DEV_NAME,O_RDWR|if(iFd 0) return -1;M3352-tcge tr(iFd, &opt); cfsetispeed

32、(&opt,B115200); ifM3352-tcge tr(iFd, &opt); cfsetispeed(&opt,B115200); if(tcge &opt)0)opt.c_lflag opt.c_iflag &=opt.c_oflag &=opt.c_cflag &=(CSIZEopt.c_ccVTIME if (tcse tr(iFd,&opt)0) for (i = 0; i 1000; i+)ucBufi=0 xff-write(iFd,ucBuf,len = read(iFd, ucBuf, 0 xff); pr f(getdate:%dn,len); for (i = 0

33、; i len; i+)pr f(%x, pr returnM3352- 程4.11 設(shè)置串口信號線狀 4.8表 TIOCM設(shè)置串口信號線狀態(tài)需要使用TIOCMSET4.12程4.12M3352- 程4.11 設(shè)置串口信號線狀 4.8表 TIOCM設(shè)置串口信號線狀態(tài)需要使用TIOCMSET4.12程4.12 設(shè)置串口信號線狀#include #includes #include #includes ioctl(fd,TIOCMGET,&s M3352-上述代碼是把DTR4.6 SocketCANM3352-N128LI2CANSocket CANSocket CAN的使用進(jìn)CANM3352-上

34、述代碼是把DTR4.6 SocketCANM3352-N128LI2CANSocket CANSocket CAN的使用進(jìn)CAN 這就可以使用socketcan了socketcanTCP/IPCAN網(wǎng)絡(luò)之前需要先打開一個(gè)套接字。CAN的套接字socket(2)PF_CAN作為 CAN 4.13 s=socket(PF_CAN,SOCK_DGRAM,s=socket(PF_CAN,SOCK_RAW,rootM3352#ifconfigLinkencap:UNSPEC HWaddr00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 UP RUNNING

35、NOARP MTU:16 Metric:1RXpackets:0 errors:0 dropped:0 overruns:0 frame:0 TXpackets:0errors:0dropped:0overruns:0carrier:0 colli s:0 txqueuelen:10RXbytes:0 (0.0 B) TX bytes:0 (0.0 rootM3352 # /sbin/ip link set can0 type can bitrate 1000000rootM3352# ifconfigcan0 口ioctl(fd,TIOCMGET,&s s us &= TIOCM_DTR;

36、ioctl(fd,TIOCMSET,&s us);M3352-程can_frame read(2)struct can_frame 的結(jié)構(gòu)體。 M3352-程can_frame read(2)struct can_frame 的結(jié)構(gòu)體。 4.144.14 structsockaddr_can4.15程4.15 綁定接structsockaddr_canstructsockaddr_cansa_family_tunion /*transportprotocolclassaddressinfo(e.g.ISOTP)*/ struct canid_t rx_id, tx_id; tp;forfutu

37、reCANprotocolsaddressinformation 29 位組成。其格式包含兩個(gè)部分:11 位基本 ID、18 位擴(kuò)展 IDControllerAreaNetworkIdentifier*bit 0-CAN(11/29bit : (0dataframe1error bit (1rtr bit :(0standard11bit,1extended29typedef u32 structcan_framecanid_tcan_id; /*32 bit CAN_ID+EFF/RTR/ERRflags can_dlc;* 數(shù)據(jù)長度0 . 8 data8 attribute M3352-C

38、AN0。這樣套接字就可以從所有使用的CANCANrevfrom(2) 4.16CANM3352-CAN0。這樣套接字就可以從所有使用的CANCANrevfrom(2) 4.16CANcan_frame CAN接口都綁定了= 0,nbytes=write(s,&frame,sizeof(structstructcan_framenbytes=read(s,&frame,sizeof(structcan_frame); if (nbytes 0) perror(canrawsocketread); return 1;/*paranoid check. if(nbytessizeof(structc

39、an_frame)fpr f(stderr, read:pleteCANframen); return 1;/*dosomethingwiththereceived CAN frame structifreqs=socket(PF_CAN,SOCK_RAW,strcpy(ifr.ifr_name, can0 ); ioctl(s,SIOCGIFINDEX,&ifr);addr.can_family = AF_CAN; addr.can_ifindex=ifr.ifr_ifindex;bind(s,(structsockaddr*)&addr,M3352-4.17程4.17 獲取數(shù)據(jù)源接口信4.

40、18 CAN 。如 M3352-4.17程4.17 獲取數(shù)據(jù)源接口信4.18 CAN 。如 /include/linux/can.h4.194.19 can_filterstruct can_filter canid_t can_id; strcpy(ifr.ifr_name, can0); ioctl(s, SIOCGIFINDEX, &ifr); addr.can_ifindex=ifr.ifr_ifindex; addr.can_family = AF_CAN;nbytes=sendto(s,&frame,sizeof(structcan_frame), 0, (struct socka

41、ddr*)&addr, sizeof(addr);structsockaddr_canaddr; struct ifreq ifr;socklen_tlen=sizeof(addr); struct can_frame frame;nbytes=recvfrom(s,&frame,sizeof(structcan_frame), 0, (struct sockaddr*)&addr, &len);/*geterfacenameofthereceivedCANframe*/ ifr.ifr_ifindex = addr.can_ifindex;ioctl(s,SIOCGIFNAME,pr f(R

42、eceived aCAN frame erface%s,M3352-4.204.20 0套接字就會(huì)忽略接到的CAN CAN_ERR_MASK 這個(gè)宏可以用來作為錯(cuò)誤掩碼。這個(gè)錯(cuò)誤掩碼定義在socket canM3352-4.204.20 0套接字就會(huì)忽略接到的CAN CAN_ERR_MASK 這個(gè)宏可以用來作為錯(cuò)誤掩碼。這個(gè)錯(cuò)誤掩碼定義在socket can 4.21 socketcan#include #include #include #include #includelinux/socketcan_err_mask_terr_mask=( CAN_ERR_TX_TIMEOUT|CAN_E

43、RR_BUSOFF setsockopt(s,SOL_CAN_RAW,CAN_RAW_ERR_FILTER,&err_mask, /*validbitsin CANIDforframeformats #define CAN_SFF_MASK 0 x000007FFU /* 標(biāo)準(zhǔn)幀格式 (SFF) */ #define CAN_EFF_MASK 0 x1FU/* 擴(kuò)展幀格式(EFF)*/#defineCAN_ERR_MASKFU* EFFRTR,ERRstructcan_filterrfilter0.can_id = 0 x123; rfilter0.can_mask=CAN_SFF_MASK;

44、 rfilter1.can_id = 0 x200; rfilter1.can_mask = 0 x700; id&maskcan_id&M3352-#include #include #include #include #includeM3352-#include #include #include #include #include #include #include #include #include #ifndefAF_CAN #defineAF_CAN29 #ifndef#definePF_CANAF_CAN s icvoid pr _frame(struct can_frame p

45、r f(%08xn, fr-can_id&/pr f(%08xn,fr-pr f(dlc=%dn,fr-can_dlc); pr f(data = );for(i=0;ican_dlc;pr f(%02x,fr-datai); pr f(n);#define errout(_s)fpr f(stderr,errorclass:%sn,(_s) #defineerrcode(_d)fpr f(stderr,errorcode:%02xn,s icvoidhandle_err_frame(conststruct can_frame if(fr-can_id&CAN_ERR_TX_TIMEOUT)

46、M3352-if(fr-can_id&CAN_ERR_LOSTARB) if(fr-can_idM3352-if(fr-can_id&CAN_ERR_LOSTARB) if(fr-can_id&CAN_ERR_CRTL) if(fr-can_id&CAN_ERR_PROT) if(fr-can_id&CAN_ERR_TRX) if(fr-can_id&CAN_ERR_ACK) if(fr-can_id&CAN_ERR_BUSOFF) if(fr-can_id&CAN_ERR_BUSERROR) if(fr-can_id&CAN_ERR_RESTARTED) #definefpr f(stder

47、r, %s,%s, %d:%sn, FILE , func , LINE , s ret,structcan_framefr,frdup; struct timeval tv;M3352-fd_setwhile(1) tv.tv_secM3352-fd_setwhile(1) tv.tv_sec=tv.tv_usec = 0; FD_SET(fd,ret=select(fd+1,&rset,NULL,NULL,NULL); if (ret = 0) myerr(selecttimeout); return -1;/*select調(diào)用無錯(cuò)返回時(shí),表示有符合規(guī)則的數(shù)據(jù)幀到達(dá) */ ret = re

48、ad(fd, &frdup, sizeof(frdup);if (ret sizeof(frdup) myerr(readfailed); return -1;if (frdup.can_id & CAN_ERR_FLAG) /* */ myerr(CANdeviceerror); pr _frame(&frdup);/* 打印數(shù)據(jù)幀信息 ret = write(fd, &frdup, sizeof(frdup);/* 把接收到的數(shù)據(jù)幀發(fā)送出去*/ if (ret 0) myerr(writefailed); return -1;returnargc,charM3352-structsocka

49、ddr_canaddr; struct ifreq ifr;M3352-structsockaddr_canaddr; struct ifreq ifr;s = socket(PF_CAN, SOCK_RAW, CAN_RAW);/* 創(chuàng)建套接字 */ if (s 0) perror(socketPF_CANfailed); return 1;/* 把套接字綁定到can0 接口 strcpy(ifr.ifr_name, can0);ret=ioctl(s,SIOCGIFINDEX,&ifr); if (ret 0) perror(ioctlfailed); return 1;addr.can_

50、family = PF_CAN; ret=bind(s,(structsockaddr*)&addr,sizeof(addr); if (ret 0) perror(bindfailed); return 1;/* */ if (1) structcan_filter/* 第1 個(gè)規(guī)則是可以接收ID 為0 x200 & 0 x的數(shù)據(jù)幀*/ filter0.can_id = 0 x200 | CAN_EFF_FLAG;filter0.can_mask=/* 第2 個(gè)規(guī)則是可以接收ID 為0 x20F & 0 x的數(shù)據(jù)幀*/ filter1.can_id = 0 x20F | CAN_EFF_FL

51、AG;M3352-USBCAN CANNET 4.7 (/dev/watchdog M3352-USBCAN CANNET 4.7 (/dev/watchdog 喂作timeout=pr f(The timeout is %d secondsn, timeout);timeout= filter1.can_mask=/* CAN02個(gè)規(guī)則中的任何一個(gè)也被接受*/ ret = setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, &filter, sizeof(filter);if(ret 0) perror(setsockoptfailed); return 1

52、;test_can_rw(s,/*進(jìn)入測試returnM3352-V 4.22 所示是一個(gè)非常簡單的范例。打開看門狗后,將看門狗超時(shí)設(shè)置為 4.22 M3352-V 4.22 所示是一個(gè)非常簡單的范例。打開看門狗后,將看門狗超時(shí)設(shè)置為 4.22 #include #include #include #include #include#includelinux/watchdog#defineWDTwdt_fd=-1; if (wdt_fd = -1) pr f(fail to open WDTpr f(WDTis timeout= ioctl(wdt_fd,WDIOC_GETTIMEOUT,&t

53、imeout); pr f(Thetimeoutwasis%dsecondsn,timeout);#if1 /while(1) write(wdt_fd,V,M3352-write(wdt_fd,0,M3352-write(wdt_fd,0, #else /關(guān)閉看門狗 write(wdt_fdV1); pr f(WDTiscloseed!n); returnM3352-5QT 45.1 C+ 5.2 QtQtQt UI Qt 操作系統(tǒng)部署這些應(yīng)用程序。Qt 公司(Trolltech) 的M3352-5QT 45.1 C+ 5.2 QtQtQt UI Qt 操作系統(tǒng)部署這些應(yīng)用程序。Qt 公司(

54、Trolltech) 的Qt 主版本為4.7,所支持5.1如圖 5.1 QtQt/EQt/E在原始QtQt/X11X serverXlibXliblinux5.3 解壓 qt-everywhere-rc-4.7.3.tar.bz2,并進(jìn)入 qt-everywhere- build-qtQtapt-get 為了能使用編譯得到的 Qt 環(huán)境,需要設(shè)置環(huán)境變量,至少需要將 qt-M3352- qmakeexport - oo程oworld5.2修改代交叉編編寫代不成編譯成功成生成M3352- qmakeexport - oo程oworld5.2修改代交叉編編寫代不成編譯成功成生成不正運(yùn)行正常正應(yīng)用程

55、圖 oo.cpp5.1o#include argc,char*qmake -生成pro文ljpubuntu:$qmake-v QMake verUsingQt4.7.3in$set-env點(diǎn)+空格+set- M3352- M3352- o目錄下見oonfsPC nfs PC Tslib指定了觸摸屏對應(yīng)的設(shè)備文件,這里指定為/dev/input/event1。但其值 在成功設(shè)定鼠標(biāo)設(shè)備后,可以如下啟動(dòng)Qt-qwsQt Qt rootM3352o -rootM3352# export$cat/dev/input/event0|rootM3352# export$ $ $qmake -QLabel

56、label( o world); returnM3352-5.3圖 o5.5 qmakeproqmake MakefileMakefile M3352-5.3圖 o5.5 qmakeproqmake MakefileMakefile oQt 程序,自動(dòng)生成的“pro 要求,這時(shí)就需要程序員手動(dòng)改寫“pro pro 文件”相關(guān)prolib (庫模板) pro -project生成pro文件,再在這個(gè)pro文件上進(jìn)行相應(yīng)修改M3352-procpp pro = M3352-procpp pro = pro uic處理的由Qtdesinger生成的*.ui$ $qmake-oCO

57、NFIG += qt HEADERS +=oh+=HEADERSo+=o.cpp +=M3352-rcc處理的*.qrc指定預(yù)定義的C+指定C+指定工程所要使用的Qt(默認(rèn)是coreguiQtCore和QtGui)M3352-rcc處理的*.qrc指定預(yù)定義的C+指定C+指定工程所要使用的Qt(默認(rèn)是coreguiQtCore和QtGui) debug同時(shí)存在時(shí),release失效。Qt。此選項(xiàng)是默認(rèn)包括的。桌QtSDK桌 版本 QtSDKQt Qt SDK PCQt應(yīng)用程序的開發(fā)調(diào)試,待應(yīng)用程序基本成型后,再將其移植到目標(biāo)板上。Qt SDK 主要包括以下兩個(gè)部分:Qt Qt Creator

58、以 5.4面面M3352-5.4QtCreatorQtSDKQtSDK Qt SDKM3352-5.4QtCreatorQtSDKQtSDK Qt SDK個(gè)ubuntuapt-getLinux版的QtSDKQtCreator通過如下命令啟動(dòng)QtCreator5.4Qt CreatorQt5.4菜單欄上“工具”5.5$ $sudoapt-getinstallqt-M3352-5.5 5.5所示的界面,Qt Creator M3352-5.5 5.5所示的界面,Qt Creator 5.5 Qt qmake /usr/bin/qmakeQtdesktop-qmake。添加成功后按確定,返回圖 5.

59、4 界面。QtCreator 5.65.6 M3352-如圖 5.85.7 5.8 M3352-如圖 5.85.7 5.8 5.9界面。可以看到,Qt Creator 5.9 mainwindow.cppM3352- 5.105.10 5.10 ooM3352- 5.105.10 5.10 oooworld選擇前面所設(shè)置桌面版本的Qt5.12M3352-5.12 Qt5.13圖 oworldoQtQt SDKM3352-5.12 Qt5.13圖 oworldoQtQt SDK版本的Qt5.7 zylauncherzylauncher 如圖 $ cd $qmake-$ $ M3352-5.14

60、zylauncherqmlqml 5.15gui-框架根目start-qml-5.15 zylaucherM3352-5.14 zylauncherqmlqml 5.15gui-框架根目start-qml-5.15 zylaucherqml_gui 目錄下放置的是框架相關(guān)文件。img start-qml-guiqml_guistart-qml-gui enu.qml文件來講解如何通過修改qml enu.qmlM3352-程enu.qmlimport QtQuick 1.0 importfunc.jsasM3352-程enu.qmlimport QtQuick 1.0 importfunc.js

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論