91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)EM9287 Linux Socket CAN驅(qū)動簡介

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-16 10:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、簡述

EM9287工控主板CPU為Freescale 的iMX287,主頻454MHz,以具有豐富的通訊接口為特色,可同時支持雙網(wǎng)口、7路串口、32路GPIO、SPI、I2C以及CAN通訊等接口。CAN是一種在世界范圍內(nèi)廣泛用于自動控制、嵌入式設(shè)備和汽車領(lǐng)域的網(wǎng)絡(luò)技術(shù),EM9287 的CAN通訊接口是通過FlexCAN模塊來實(shí)現(xiàn)控制局域網(wǎng)絡(luò)協(xié)議(CAN)通信的,F(xiàn)lexCAN模塊同時支持CAN協(xié)議規(guī)范2.0,包括協(xié)議所規(guī)定的標(biāo)準(zhǔn)幀和擴(kuò)展幀。

Linux下最早使用CAN的方法是基于字符設(shè)備來實(shí)現(xiàn)的,在EM9287上移植的Linux-3.9.7內(nèi)核中FlexCAN模塊驅(qū)動實(shí)現(xiàn)的是Socket CAN方式,Scoket CAN使用了socket接口和Linux網(wǎng)絡(luò)協(xié)議棧,這種方法使得CAN設(shè)備驅(qū)動可以通過網(wǎng)絡(luò)接口函數(shù)來調(diào)用,這樣大大地方便了熟悉Linux網(wǎng)絡(luò)編程程序員,由于調(diào)用的都是標(biāo)準(zhǔn)的socket 函數(shù),也使得應(yīng)用程序便于移植,而不會因?yàn)橛布恼{(diào)整而修改應(yīng)用程序,這樣加強(qiáng)了應(yīng)用程序的可維護(hù)性。關(guān)于Socket CAN在Linux內(nèi)核文檔中有更為詳細(xì)的介紹(/Linux-3.9.7/Documentation/networtking/can.txt)。

本文將簡要介紹EM9287在Linux-3.9.7內(nèi)核上如何實(shí)現(xiàn)CAN驅(qū)動以及如何在應(yīng)用程序中使用Socket CAN。

二、Linux內(nèi)核配置

內(nèi)核配置中增加以下選項(xiàng)(make menuconfig):

Networking support --->
<*> CAN bus subsystem support --->
<*> Raw CAN Protocol (raw access with CAN-ID filtering)
<*> Broadcast Manger CAN Protocol (with content filtering)
<*> CAN Gateway/Router (with netlink configuration)
CAN Device Drivers --->
<*> Platform CAN drivers with Netlink support
[*] CAN bit-timing calculation
<*> Support for Freescale FLEXCAN based chips

EM9287移植的是Linux-3.9.7版本,對于硬件的描述和配置都是通過device tree相關(guān)文件進(jìn)行傳遞,除了內(nèi)核的配置外,還需要在相應(yīng)的dst文件中增加can0節(jié)點(diǎn)。如:

can0: can@80032000 {
compatible = 'fsl,imx28-flexcan', 'fsl,p1010-flexcan';
reg = <0x80032000 0x2000>;
interrupts = <8>;
clocks = <&clks 58>, <&clks 58>;
clock-names = 'ipg', 'per';
pinctrl-names = 'default';
pinctrl-0 = <&can0_pins_a>;
};

內(nèi)核編譯成功后,板卡啟動顯示即表示flexcan驅(qū)動加載成功。

[ 2.022398] CAN device driver interface
[ 2.031257] flexcan 80032000.can: device registered (reg_base=f5032000, irq=190)

三、Socket CAN的測試

Socket CAN 的使用會用到ip命令工具,由于busybox中的ip沒有支持 socket can,所以需要重新移植ip工具,iproute2中的ip可以支持socket can。

1、移植iproute2
從iproute2官方網(wǎng)站上下載源碼,我們這里用到的是iproute2-3.10.0.
1) tar jxvf iproute2-3.10.0
2) 修改Makefie
CC=arm-none-linux-gnueabi-gcc
由于只用到ip工具,所以將別編譯目錄屏蔽:
#SUBDIRS=lib ip tc bridge misc netem genl man
SUBDIRS=lib ip
3) make編譯成功后生成 “ip”
4) 將ip復(fù)制到EM9287的文件系統(tǒng)中,替換原來busybox中的ip

這樣ip命令工具就算是移植好了。

2、使用ip命令配置can0接口。
// 關(guān)閉can0接口,以便進(jìn)行配置
ifconfig can0 down
// 方法一:配置can0的波特率為250Kbps
ip link set can0 type can bitrate 250000
// 方法二:配置can0的波特率為250Kbps
ip link set can0 type can tp 250 prog-seg 5 phase-seg1 8 phase-seg2 2 sjw 2
// 啟動can0接口
ifconfig can0 up

EM9287的FLEXCAN時鐘選用的是24MHz的外部晶體振蕩時鐘。為了適應(yīng)各種不同的采樣率,我們采用方法二來對can的波特率進(jìn)行設(shè)置,以CiA推薦的采樣點(diǎn)在bit的87.5%處,作為基準(zhǔn)來計算:

波特率 PRESDIV
-> fTq
TSEG1 TSEG2 TQ 采樣點(diǎn)
PROPSEG+PSEG1+2 PSEG2+1
1000 1 -> 12MHz (0 + 7 + 2)= 9 (1+1)= 2 12 83.3%
800 1 -> 12MHz (3 + 7 + 2)= 12 (1+1)= 2 15 86.6%
500 2 -> 8MHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%
250 5 -> 4MHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%
125 11 -> 2MHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%
100 14 -> 1.6MHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%
60 24 -> 960KHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%
50 29 -> 800KHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%
20 74 -> 320KHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%
10 149 -> 160KHz (4 + 7 + 2)= 13 (1+1)= 2 16 87.5%

3、Scoket CAN測試代碼

就像TCP/IP協(xié)議一樣,在使用CAN網(wǎng)絡(luò)之前首先需要打開一個套接字。CAN的套接字使用到了一個新的協(xié)議族PF_CAN,所以在調(diào)用socket( )這個系統(tǒng)函數(shù)的時候需要將PF_CAN作為第一個參數(shù)。當(dāng)前有兩個CAN的協(xié)議可以選擇,一個是原始套接字協(xié)議( raw socket protocol),另一個是廣播管理協(xié)議BCM(broadcast manager)。作為一般的工業(yè)應(yīng)用我們選用原始套接字協(xié)議:

s = socket(PF_CAN, SOCK_RAW, CAN_RAW);

在成功創(chuàng)建一個套接字之后,通常需要使用bind( )函數(shù)將套接字綁定在某個CAN接口上。在綁定 (CAN_RAW)套接字之后,就可以在套接字上使用read( )/write( )進(jìn)行數(shù)據(jù)收發(fā)的操作。

基本的CAN幀結(jié)構(gòu)體和套接字地址結(jié)構(gòu)體定義在include/linux/can.h

/*
* 擴(kuò)展格式識別符由 29 位組成。其格式包含兩個部分:11 位基本 ID、18 位擴(kuò)展 ID。
* Controller Area Network Identifier structure
*
* bit 0-28 : CAN識別符 (11/29 bit)
* bit 29 : 錯誤幀標(biāo)志 (0 = data frame, 1 = error frame)
* bit 30 : 遠(yuǎn)程發(fā)送請求標(biāo)志 (1 = rtr frame)
* bit 31 :幀格式標(biāo)志 (0 = standard 11 bit, 1 = extended 29 bit)
*/
typedef __u32 canid_t;
struct can_frame {
canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
__u8 can_dlc; /* 數(shù)據(jù)長度: 0 .. 8 */
__u8 data[8] __attribute__((aligned(8)));
};

以下為相關(guān)的測試代碼:

int main( int argc,char* argv[] )
{
int i1, ret;
int nbytes, baudrate;
int s;
struct sockaddr_can addr;
struct ifreq ifr;
struct can_frame frame;
printf( 'SocketCAN Test V1.0\n' );
// 解析命令行參數(shù), CAN波特率
if( argc > 1 )
{
baudrate = atoi( argv[1] );
}
else
{
baudrate = 250000;
}
printf( 'bitrate is %d\n', baudrate );
set_can_bittiming( baudrate );
s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
printf( 'SOCK_RAW can sockfd:%d\n', s );
if( s < 0 )
{
return -1;
}
int loopback = 0; /* 0 = disabled, 1 = enabled (default) */
setsockopt(s, SOL_CAN_RAW, CAN_RAW_LOOPBACK, &loopback, sizeof(loopback));
strcpy(ifr.ifr_name, 'can0' );
ret = ioctl(s, SIOCGIFINDEX, &ifr);
if( ret < 0 )
{
return -1;
}
addr.can_family = AF_CAN;
addr.can_ifindex = ifr.ifr_ifindex;
bind(s, (struct sockaddr *)&addr, sizeof(addr));
for( i1=0; i1<10; i1++ )
{
nbytes = read(s, &frame, sizeof(struct can_frame));
if (nbytes < 0) {
perror('can raw socket read');
return 1;
}
if( nbytes < (int)sizeof(struct can_frame))
{
perror('read: incomplete CAN frame\n');
return 1;
}
/* do something with the received CAN frame: send back */
nbytes = write(s, &frame, sizeof(struct can_frame));
printf( '%d sendbytes: %d\n', i1+1, nbytes );
}
close( s );
return 0;
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219047
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6107

    瀏覽量

    37081
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    國產(chǎn)芯筑基,飛騰主板賦能信創(chuàng)未來

    信息技術(shù)自主可控成為國家戰(zhàn)略的今天,信創(chuàng)產(chǎn)業(yè)正從“政策驅(qū)動”邁向“市場驅(qū)動”的高質(zhì)量發(fā)展新階段。作為信創(chuàng)產(chǎn)業(yè)鏈的核心硬件基石,主板的國產(chǎn)化
    的頭像 發(fā)表于 12-30 09:49 ?206次閱讀
    國產(chǎn)芯筑基,飛騰主板賦能信<b class='flag-5'>創(chuàng)</b>未來

    龍芯中科成功舉辦2025信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)教融合交流會

    11月30日,在教育部教育管理信息中心、山東省電化教育館的支持和指導(dǎo)下,龍芯中科聯(lián)合浪潮集團(tuán)、濟(jì)南幼兒師范高等??茖W(xué)校(以下簡稱“濟(jì)南幼高?!保晒εe辦信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)教融合交流會,并同步舉行信息技術(shù)應(yīng)用創(chuàng)新實(shí)踐基地啟用儀式
    的頭像 發(fā)表于 12-08 14:53 ?786次閱讀

    socket是什么

    于在不同計算機(jī)之間傳輸數(shù)據(jù)。Socket技術(shù)可以用于實(shí)現(xiàn)各種網(wǎng)絡(luò)應(yīng)用,例如客戶端-服務(wù)器應(yīng)用,點(diǎn)對點(diǎn)應(yīng)用等。 在計算機(jī)網(wǎng)絡(luò)中,Socket技術(shù)通常用于創(chuàng)建客戶端-服務(wù)器模型。在這種模型
    發(fā)表于 12-03 08:27

    龍芯中科助力2025教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦

    2025年11月13日-15日,由中國教育技術(shù)協(xié)會主辦、浙江大學(xué)與中國教育技術(shù)協(xié)會網(wǎng)絡(luò)安全專業(yè)委員會聯(lián)合承辦,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會、浙江高校信
    的頭像 發(fā)表于 11-21 16:23 ?792次閱讀

    誠邁科技信創(chuàng)電腦助力2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿收官

    11月15日,由中國教育技術(shù)協(xié)會主辦、浙江大學(xué)與中國教育技術(shù)協(xié)會網(wǎng)絡(luò)安全專業(yè)委員會聯(lián)合承辦,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會、浙江高校信
    的頭像 發(fā)表于 11-17 17:58 ?679次閱讀
    誠邁科技信<b class='flag-5'>創(chuàng)</b>電腦助力2025第二屆教育<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新大賽圓滿收官

    OBOO鷗柏|信創(chuàng)觸摸一體機(jī)兆芯115寸Linux國產(chǎn)系統(tǒng)技術(shù)智造

    BOO鷗柏信創(chuàng)觸摸一體機(jī):兆芯115寸Linux智造新標(biāo)桿在信息技術(shù)應(yīng)用創(chuàng)新浪潮中,【OBOO鷗柏】推出的信創(chuàng)觸摸一體機(jī)以其卓越性能和智能化設(shè)計,成為行業(yè)數(shù)字化轉(zhuǎn)型的重要工具。這款搭載
    的頭像 發(fā)表于 11-16 15:44 ?1297次閱讀
    OBOO鷗柏|信<b class='flag-5'>創(chuàng)</b>觸摸一體機(jī)兆芯115寸<b class='flag-5'>Linux</b>國產(chǎn)系統(tǒng)<b class='flag-5'>技術(shù)</b>智造

    寶馬南京信息技術(shù)有限公司開業(yè)

    今日,寶馬(南京)信息技術(shù)有限公司在南京正式“掛牌運(yùn)行”。這家華晨寶馬全資子公司由領(lǐng)悅數(shù)字信息技術(shù)有限公司南京分公司“迭代”而來,代表著一次里程碑式的“進(jìn)化”。這次升級不僅加速了寶馬在華數(shù)字化轉(zhuǎn)型進(jìn)程,更通過深化本土創(chuàng)新,為“未來智慧出行”的發(fā)展譜寫了核心“代碼”。
    的頭像 發(fā)表于 10-29 15:17 ?630次閱讀

    軟通動力入選2025新一代信息技術(shù)應(yīng)用優(yōu)秀案例

    近日,DBC德本咨詢正式發(fā)布“2025新一代信息技術(shù)應(yīng)用優(yōu)秀案例”榜單,軟通動力信息技術(shù)(集團(tuán))股份有限公司攜手廣西星網(wǎng)智云科技有限公司,為廣西玉柴機(jī)器集團(tuán)有限公司打造的“玉柴數(shù)智化審計業(yè)務(wù)場景項(xiàng)目”成功入選,位列榜單第二名,充分彰顯了軟通動力在企業(yè)數(shù)智化轉(zhuǎn)型領(lǐng)域的深厚
    的頭像 發(fā)表于 09-28 17:48 ?1397次閱讀

    易華錄入選國家級信息技術(shù)應(yīng)用創(chuàng)新典型解決方案

    近日,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)公布了“2024年信息技術(shù)應(yīng)用創(chuàng)新解決方案”評選結(jié)果。易華錄申報的“基于節(jié)能高效藍(lán)光的超級智能存儲解決方案”憑借顯著的
    的頭像 發(fā)表于 08-07 15:35 ?1622次閱讀

    信息技術(shù)應(yīng)用產(chǎn)學(xué)協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    設(shè)在中國軟件評測中心。誠邁科技作為信創(chuàng)技術(shù)先鋒企業(yè),受邀成為首批參與單位,與國內(nèi)頂尖高校、領(lǐng)軍企業(yè)和權(quán)威機(jī)構(gòu)攜手,共同打造具有中國特色的信息技術(shù)人才培養(yǎng)新范式,為
    的頭像 發(fā)表于 08-06 17:29 ?1559次閱讀
    “<b class='flag-5'>信息技術(shù)</b>應(yīng)用產(chǎn)學(xué)協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    佛瑞亞如何通過信息技術(shù)推動業(yè)務(wù)增長

    在數(shù)字化、信息化的浪潮下,信息技術(shù)已經(jīng)不僅是后臺工具,更成為驅(qū)動企業(yè)發(fā)展的關(guān)鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區(qū)信息技術(shù)總監(jiān)馬瑛,了解她
    的頭像 發(fā)表于 07-29 14:00 ?909次閱讀

    飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實(shí)力

    信息技術(shù)飛速發(fā)展的當(dāng)下,信創(chuàng)產(chǎn)業(yè)已成為我國實(shí)現(xiàn)科技自立自強(qiáng)、保障國家信息安全的關(guān)鍵領(lǐng)域。信創(chuàng),即信息技術(shù)應(yīng)用創(chuàng)新,其核心目標(biāo)是實(shí)現(xiàn)
    的頭像 發(fā)表于 07-22 18:20 ?713次閱讀

    DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認(rèn)證機(jī)構(gòu)

    近日,DEKRA德凱成功獲得沙特標(biāo)準(zhǔn)、計量和質(zhì)量組織(SASO)認(rèn)可,正式成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?923次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國家推動IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國家網(wǎng)絡(luò)安全、推動產(chǎn)業(yè)升級和實(shí)現(xiàn)數(shù)字主權(quán)的重任。簡單來
    的頭像 發(fā)表于 06-13 10:06 ?8336次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽正式開賽

    為進(jìn)一步落實(shí)建設(shè)網(wǎng)絡(luò)強(qiáng)國和教育強(qiáng)國的戰(zhàn)略部署,推動各級教育行政部門及高校信息技術(shù)應(yīng)用創(chuàng)新能力提升,培養(yǎng)實(shí)戰(zhàn)型創(chuàng)新人才。龍芯中科聯(lián)合太初元碁、誠邁科技在2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽共同發(fā)布信息技術(shù)應(yīng)用創(chuàng)新人工智能方向(賽
    的頭像 發(fā)表于 05-13 16:21 ?1443次閱讀