beaglebone black的串口连接、用usb联网、内核模块的本地编译

这篇文章记录一下题目所述的这3个点。

串口连接BBB

使用usb线可以连接BBB和电脑,用ssh就可以登录BBB来进行操作。但有时候万一系统配置出现故障,或ssh用不了了,那就只能用串口连接了。首先要有一个串口转USB模块,用GND, TXD, RXD这三根线连接到板子上。具体连接方式不清楚的话请见我之前关于UART的日志里的那幅照片。理论上串口是随时都可以连接的,但我为了看到更全的输出信息,我在给BBB上电之前就先把它和电脑连好,在电脑端打开串口调试助手(用linux或mac的话可以打开终端的screen)然后用5V电源供电或者用usb连到电脑上供电。

mac打开screen的命令:screen /dev/cu.usbserial 115200
linux打开screen的命令:sudo screen /dev/ttyUSB0 115200

供电以后,串口马上就会开始输出启动信息。过了一会就会出现一个Angstrom的字符画logo,并要求登录,输入用户名和密码(用户名是root,如果你没改过的话)回车就登录了。
.---O---.                                           
|       |                  .-.           o o        
|   |   |-----.-----.-----.| |   .----..-----.-----.
|       |     | __  |  ---'| '--.|  .-'|     |     |
|   |   |  |  |     |---  ||  --'|  |  |  '  | | | |
'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'
                -'  |
                '---'

The Angstrom Distribution beaglebone ttyO0

Angstrom v2012.12 - Kernel 3.8.13

beaglebone login: 

启动完成以后,在这里可以像之前用ssh连接一样直接输入shell命令。可见串口是比usb+ssh更可靠的连接方式,但是因为串口的传输速度比usb线还是要慢很多的(你可以输入dmesg感受一下),所以如果能用ssh的话,一般我们还是用ssh。

这里有一篇文章可以参考《用串口连接BBB的2.5种方法》http://dave.cheney.net/2013/09/22/two-point-five-ways-to-access-the-serial-console-on-your-beaglebone-black

用usb联网


beaglebone如果用usb连接到了可以上网的电脑,可以利用分享电脑网络的办法让BBB也联网。

Windows7下的配置方法可以参考http://lanceme.blogspot.com/2013/06/windows-7-internet-sharing-for.html

mac下的配置方法如下:

插上usb以后,网络连接里会出现一个到BBB的连接,记住这个连接的名字。

然后打开系统设置里的“共享”,先取消勾选左边的“互联网共享”,然后在右边勾选刚才的连接名字,再重新勾选左边的互联网共享,电脑端就好了。然后保持usb线连接,再插上串口线,用串口连接到BBB(此时ssh是连接不通的),输入 udhcpc -i usb0,就完成配置了。然后就可以拔掉串口线了,如果本次开机过程中断开了usb线(比如同时使用5v电源在供电)也没关系,重新插上还可以恢复网络连接。

可以试试ping www.baidu.com。



ubuntu中配置

BBB上:
route add default gw 192.168.7.1
vim /etc/resolv.conf
在最后添加一行nameserver 8.8.8.8

Ubuntu上:
通过ifconfig命令得知eth0是本机连接网络的接口,eth1是usb连接BBB的接口
sudo su
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
然后在BBB上ping www.baidu.com检测一下。
貌似重启电脑或BBB就无效了。

联网以后第一件事就是 opkg update。


本地编译内核模块


因为买来的BBB里没有内核源文件,所以没法编译。现在联网了,可以不必重新交叉编译内核,直接在BBB上下载配置一下内核源文件。

opkg update

opkg install kernel-headers

opkg install kernel-dev

cd /usr/src/kernel

make scripts

就配置完成了。这要耗费约200M空间,可以先输入 df -h 看看eMMC剩余空间够不够。

测试一下。

源文件mykernelmod.c

#include <linux/module.h>  
#include <linux/kernel.h>  
  
static int __init enable_usermode(void)  
{  
        printk(KERN_INFO "Usermode enabled.\n");  
        return 0;  
}  
  
static void __exit disable_usermode(void)  
{  
        printk(KERN_INFO "Usermode disabled.\n");  
}  
  
module_init(enable_usermode);  
module_exit(disable_usermode);  

Makefile(M必须大写,注意make语句前面必须是tab键)

obj-m += mykernelmod.o
KDIR = /usr/src/kernel
PWD := $(shell pwd)

all:
        make -C $(KDIR) M=$(PWD) ARCH=arm modules
clean:
        make -C $(KDIR) M=$(PWD) ARCH=arm clean
然后执行make,成功生成mykernelmod.ko

insmod mykernelmod.ko之后dmesg | tail可以看到输出了“Usermode enabled.” 然后 rmmod mykernelmod,再dmesg | tail,看到输出了"Usermode disabled."


参考资料:http://elene.dahners.com/blog/2012/10/22/compiling-a-kernel-module-for-beaglebone/

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值