这篇文章记录一下题目所述的这3个点。
串口连接BBB
.---O---.
| | .-. o o
| | |-----.-----.-----.| | .----..-----.-----.
| | | __ | ---'| '--.| .-'| | |
| | | | | |--- || --'| | | ' | | | |
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
-' |
'---'
The Angstrom Distribution beaglebone ttyO0
Angstrom v2012.12 - Kernel 3.8.13
beaglebone login:
用usb联网
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
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
联网以后第一件事就是 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/