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...