QT251產(chǎn)品規(guī)格書
一、產(chǎn)品概述
QT251N是一款基于精簡指令集(RISC)架構(gòu)高性能的32位MPU的嵌入式計(jì)算機(jī)。該CPU是以ARMCortex-A8為核心的系統(tǒng)級單芯片,內(nèi)置NEON單指令流多數(shù)流(SIMD)協(xié)處理,帶有錯(cuò)誤校正碼(ECC)的256KBL2緩存,支持1GHz的頻率。系統(tǒng)提供RS458/RS232通訊,有線網(wǎng)絡(luò)通訊,CAN總線,同時(shí)也提供可選的無線GPRS通訊,具有體積小、功耗低、效率高等特點(diǎn),適用于電力集中器、HMI、工業(yè)控制、網(wǎng)關(guān)等場合。
二、產(chǎn)品特性
1.硬件特性
AM355xCPU:
32bitARMCorte-A8架構(gòu),主頻800MHz,1.6MIPS/MHz,主頻1GHz
32KBI-cache,32KBD-cache,NeonSIMD協(xié)處理器
內(nèi)存:
512MbyteDDR3、64KB專用RAM
FLASH:
512MbyteNANDFlash,支持8Gbyte
支持NAND、NOR、SRAM等FLASH
加密:
支持PRNG/DES/3DES/AES/SHA/HMAC加密,256位加密模式
看門狗:
內(nèi)置WDT,溢出時(shí)間小于60秒,支持空閑喚醒和掉電喚醒
RTC:
高精度實(shí)時(shí)時(shí)鐘,內(nèi)置供電電池
調(diào)試口:
1路串口為系統(tǒng)console口。波特率:115200,數(shù)據(jù)位:8,停止位:1,校驗(yàn)位:none,流控:無
RS485/RS232:
8路獨(dú)立RS485通訊,內(nèi)部全隔離保護(hù)設(shè)計(jì)
8路RS485/RS232分時(shí)復(fù)用通訊,可根據(jù)實(shí)際選擇使用,內(nèi)部全隔離保護(hù)設(shè)計(jì)
B碼對時(shí):
1路RS485接收,專用于B碼對時(shí),連接后自動對時(shí)
CAN:
1路CAN通訊,內(nèi)置隔離保護(hù)設(shè)計(jì)
開關(guān)量輸出輸入:
2路雙刀雙擲繼電器輸出
2路開關(guān)量輸入
網(wǎng)絡(luò):
4路10M/100M自適應(yīng)工業(yè)以太網(wǎng),標(biāo)準(zhǔn)RJ45接口
15KVTVS保護(hù),內(nèi)部全隔離保護(hù)設(shè)計(jì)
無線功能(可選):
射頻波段800/900/1800/1900MHz(可選2/3/4G)
可選WIFI:可連接AP,也可做AP
1個(gè)SIM卡接口,1個(gè)天線接口
傳輸速度:達(dá)到相應(yīng)功能的標(biāo)準(zhǔn)速度
SDCARD:
內(nèi)置一個(gè)SD/MMC卡接口
電源:
輸入電壓:220V,支持交流、直流
單機(jī)功耗:<12W
機(jī)械特性
外殼金屬材質(zhì)
尺寸:1U
防護(hù)等級:IP63
工作環(huán)境
工作溫度:-40℃~+85℃
工作濕度:5%~95%
2.軟件特性
2.1系統(tǒng)特性
QT251N預(yù)裝基于TIAM335x的Linux操作系統(tǒng),版本為3.2.0。滿足POSIX標(biāo)準(zhǔn)或類UNIX平臺的應(yīng)用程序。針對系統(tǒng)*的硬件設(shè)備,內(nèi)核提供了簡單、易用的驅(qū)動接口,可加速用戶的應(yīng)用程序開發(fā)。
QT251N系統(tǒng)的軟件系統(tǒng)共分為3部分,分別為Bootloader、linux內(nèi)核和
rootfs。Bootloader是遵循GPL條款的開放源碼項(xiàng)目,UBoot主要是引導(dǎo)內(nèi)核的啟動,支持NFS掛載、NANDFlash啟動;linux內(nèi)核是整個(gè)操作系統(tǒng)的層,負(fù)責(zé)整個(gè)硬件的驅(qū)動,以及提供各種系統(tǒng)所需的核心功能;rootfs是用于明確磁盤或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),即在磁盤上組織文件的方法。
2.2環(huán)境配置
本公司提供的虛擬機(jī)系統(tǒng)ubuntu10.04,可直接編譯使用。用戶名:work
密碼:123456
編譯命令:arm-linux-gnueabihf-gcc-ofilenamefilename.c
編譯鏈:本公司提供的arm-linux-gnueabihf-4.7.tar.gz
非本公司提供的編譯環(huán)境下,把編譯鏈拷貝到PC的LINUX系統(tǒng)下,解壓編譯鏈后,把根目錄下的bin目錄添加到系統(tǒng)的環(huán)境變量即可。
如解壓到/opt/arm-linux-gnu目錄下,則添加環(huán)境變量為:
exportPATH=$PATH:/opt/arm-linux-gnu/bin
編譯鏈下載地址:
https://pan..com/s/1nv19D1Z#list/path=%2FWORK%2FCortex-A8
2.3管理機(jī)登錄
IP:eth0:192.168.1.177eth1:192.168.2.177eth2:192.168.3.177eth3:192.168.4.177
用戶名:root密碼:root
三、接口定義
1.電源接口
2.RS485接口
注:RS485第9~16通道與RS232的第9~16通道為復(fù)用通道。
3.RS232、CAN接口
注:RS232第9~16通道與RS485的第9~16通道為復(fù)用通道。對應(yīng)的驅(qū)動接口相同,為分時(shí)復(fù)用通道。
4.開關(guān)量輸出輸入
注:繼電器輸出為雙刀雙擲開關(guān),如下圖:
5.網(wǎng)絡(luò)接口
6.調(diào)試接口
調(diào)試口配置:波特率:115200,數(shù)據(jù)位:8,停止位:1,校驗(yàn)位:none,流控:無
7.RS485/RS232驅(qū)動接口
驅(qū)動接口可以在管理機(jī)的/dev目錄下查看。
四、驅(qū)動實(shí)例
在系統(tǒng)的/program目錄下有相應(yīng)的腳本文件,可以進(jìn)行一些簡單的測試。其中要確保startup.sh文件里,端口映射的正確的。文件內(nèi)容見附錄。
附錄:
1、startup.sh文件內(nèi)容:
#!/bin/sh
ln-sf/dev/ttyCH0/dev/ttyS1
ln-sf/dev/ttyCH1/dev/ttyS2
ln-sf/dev/ttyCH2/dev/ttyS3
ln-sf/dev/ttyCH3/dev/ttyS4
ln-sf/dev/ttyCH4/dev/ttyS5
ln-sf/dev/ttyCH5/dev/ttyS6
ln-sf/dev/ttyCH6/dev/ttyS7
ln-sf/dev/ttyCH7/dev/ttyS8
ln-sf/dev/ttyCH8/dev/ttyS9
ln-sf/dev/ttyCH9/dev/ttyS10
ln-sf/dev/ttyCH10/dev/ttyS11
ln-sf/dev/ttyCH11/dev/ttyS12
ln-sf/dev/ttyCH12/dev/ttyS13
ln-sf/dev/ttyCH13/dev/ttyS14
ln-sf/dev/ttyCH14/dev/ttyS15
ln-sf/dev/ttyCH15/dev/ttyS16
ln-sf/dev/ttyO1/dev/ttyS17
iplinksetcan0typecanbitrate100000
ifconfigcan0up
2、serial.c文件內(nèi)容:
#Include#Include
#Include
#Include
#Include
#Include
#Include
#Include
#definemax_buffer_size100/*buffersize*/
/*******************************************/intfd1;
intflag_close;
intopen_serial(intk,int*fd)
{
intsfd=-1;charstr[100];
sprintf(str,"/dev/ttyS%d",k);printf("open%s/n",str);
sfd=open(str,O_RDWR|O_NOCTTY|O_NONBLOCK);if(sfd==-1){
perror(str);return-1;
}
else{
*fd=sfd;return0;
}
}
/********************************************************************/intmain(intargc,char*argv[])
{
time_ttNow,tOld;intport;
char
sbuf[]=;/*固定
發(fā)送的數(shù)據(jù)*/
charsbufrec[256]=;
intsfd,retv,i,ncount=0,mcount=0;structtermiosopt;
intlength=sizeof(sbuf);
/*****************************************************************
**/
if(argc<2)
{
printf("inputerro:serial<1~4>/n");return0;
}
**/
/
**/
port=atoi(argv[1]);open_serial(port,&fd1);
/*****************************************************************
printf("readyforsendingdata.../n");tcgetattr(fd1,&opt);cfmakeraw(&opt);
/*****************************************************************
cfsetispeed(&opt,B9600);/*設(shè)置波特率為9600bps*/cfsetospeed(&opt,B9600);
/*****************************************************************tcsetattr(fd1,TCSANOW,&opt);
while(mcount<5)
{
retv=write(fd1,sbuf,length);/*發(fā)送數(shù)據(jù)*/if(retv==-1){
//perror("write");printf("writeerror/n");
}
else{
printf("thenumberofcharsentis%d/n",retv);
}
ncount=0;
printf("readyforreceivingdata.../n");
time(&tOld);tNow=tOld;ncount=0;
while(((tNow-tOld)<2))/*設(shè)置接收超時(shí)*/
{
time(&tNow);retv=read(fd2,&sbufrec[0],1);if(retv==-1){
//perror("read");
//printf("errorread/n");
//printf("tOld=%d;tNow=%d/n",tOld,tNow);
}
else{
printf("%02x",sbufrec[0]);ncount+=1;
}
}
mcount+=1;printf("/n");
}
flag_close=close(fd1);
if(flag_close==-1)/*關(guān)閉口端口*/printf("ClosetheDevice1failur!/n");
return0;
}