在linux2 6 37上新增MCP251x驅動

2021-06-16 08:21:53 字數 2887 閱讀 2632

socket can 對can protocol做了封裝,對can裝置的讀寫變成了類似tcp/ip的讀寫網路(socket操作)。

目標環境:linux2.6.37, i.mx27開發板帶mcp2515

首先註冊spi device和mcp2515 device:

1

static

const

intplat27_pins __initconst=13

14#if

(defined config_spi_imx || defined config_spi_imx_module )

15static

intcspi1_ss =;

//cspi1 ss0=pd28, ss1=pd27

16static

const

struct

spi_imx_master cspi_pdata __initconst =;

2021

#if(defined config_can_mcp251x || defined config_can_mcp251x_module )

22static

struct

mcp251x_platform_data mcp251x_info =;

2526

static

struct

spi_board_info plat27_spi_board_info __initdata =,

36};

37#endif

38#endif

3940

static

void

__init ***_init(

void)41

複製**

make menuconfig中加入:

1[*

]networking support

->

2>

can bus subsystem support

->

3>

raw can protocal

4>

broadcast manage can protocal

5can device drivers

->

6>

platform can driver with netlink support7[

*]can bit

-timing calculation

8>

microchip mcp251x spi can controllers910

device drivers

->11[

*]spi support

->

12<

*>

freescale i.mx spi controllers

1314

複製**

編譯安裝mod:

insmod can.ko

insmod can-raw.ko

insmod can-bcm.ko

insmod can-dev.ko

insmod mcp251x.ko

最新版busybox的ip還是不支援socketcan,所以要自己編譯乙個。

編譯iproute2的時候有很多問題,安裝了bison,flex,libdb4.7-dev還是死在tc目錄,後來想想只要用它的ip,於是最終修改makefile如下:

cc = /opt/arm-2010q1/bin/arm-none-linux-gnueabi-gcc

subdirs=lib ip

make通過,把ip目錄中的ip(elf檔案)拷到目標板中執行:

chmod 777 ip

./ip link set can0 up type can bitrate 250000

./ip -details link show can0

can0設定好後可以用以下命令修改bitrate

ifconfig can0 down 

echo 125000 > /sys/class/net/can0/can_bitrate 

ifconfig can0 up 

到這一步socketcan就算配置完成了,不過還是可以給它新增一些工具。

1.用socketcan裡的can-utils:

sudo apt-get install subversion

svn checkout svn: socketcan

cp -r socketcan ../workspaces

修改socketcan/can-utils/makefile

prefix=./bin

kerneldir =

cc=/opt/arm-2010q1/bin/arm-none-linux-gnueabi-gcc  (新增)

socketcan和linux2.6.37帶的socketcan版本不同,導致有些不能編譯成功,不過大部分工具都有了,剩下的如果要的話可以考慮merge linux核心----還不如自己寫工具呢

先在include下建乙個can_config.h,裡面就一句話#define version 20090105  (隨便怎麼寫吧,我是看到can.ko的版本是20090105) 

然後進到src目錄

/opt/arm-2010q1/bin/arm-none-linux-gnueabi-gcc  -o ***  ***.c -i$pwd/../include -i$pwd/***/linux-2.6.37/include  (faint,被轉成www.cnblogs.com)

除了canconfig.c通不過(需要libsocketcan.h,好在已經有iproute2了)其他的都成功。 感覺這個cansend比socketcan裡的cansend好用。

ucos ii在MC9S12XDP512上的移植

搞了幾天,總算把ucos ii移植到mc9s12xdp512上了。做個簡短的筆記。ucos ii版本 2.52,編譯器 freescale codewarrior5.9 晶元 mc9s12xdp512 移植步驟 1.根據嚮導建立新的工程,晶元選擇mc9s12xdp512,其餘預設配置 2.將ucos...

在github上新增SSH key

通過在 github 上新增 ssh key,實現免密登入,不需要每次push 和 clone 時都輸入密碼。執行 git bash 客戶端,輸入如下 cd ssh ls這兩個命令就是檢查是否已經存在 id rsa.pub 或 id dsa.pub 檔案,如果檔案已經存在,那麼你可以跳過步驟2,直接...

在選單條上新增泡泡提示

該功能的實現 於codeproject上面的乙個例子 tooltips for menu item and popup menuitem 其實例子講的步驟很簡單,不過我不打算簡單的翻譯一下,林語堂先生不是說 只用一樣東西,不明白它的道理,實在不高明 實現該功能的核心在於作者自己建立的乙個menuto...