猫言猫语

严以律己·宽以待人·自强不息·知行合一

从头编写 Linux RGB Led 驱动(一)

| 从头编写 Linux RGB Led 驱动(一)已关闭评论

我手里有一个山寨的三色二极管,大概长的是这样的模样,我要把它直接插到 RK3288 Linux 开发板上,然后通过内核模块来控制他,我希望它可以像交通灯那样工作,同时希望通过编写一个驱动程序来入门 Linux 内核模块,这将会是一系列的文章,但最终结果我也不知道能不能写完。

我使用的 kernel 版本是 4.4,使用的是 rockchip 在 github 上的官方下载地址:https://github.com/rockchip-linux/kernel,如果你使用的是其他开发板,也可以从自己的供应商软件仓库去下载内核,假设我们通过 git 把官方 kernel clone 到了 ~/kernel 目录下。

然后我们需要在 drivers 下新增一个名为 rgb_led 目录,并且新建必要的 Makefile 文件和 rgb_led.c 文件,文件内容如下:

obj-y                           += rgb_led.o
#include 
#include 

static int __init rgb_led_init(void) {
    printk(KERN_ALERT "init rgb led\n");
    return 0;
}

static void __exit rgb_led_exit(void) {
    printk(KERN_ALERT "exit rgb led\n");
}

MODULE_LICENSE("GPL");

module_init(rgb_led_init);
module_exit(rgb_led_exit);

我们还需要编辑 ~/kernel/drivers/Makefile 文件,在开始的地方添加一行

obj-y                           += rgb_led/

然后就可以编译并使用这个我们修改过的内核来启动,启动后我们就可以看到提示信息:

# dmesg | grep rgb
init rgb led

轻轻松松,这个内核模块已经开始工作了

FriendlyARM NanoPi A64 插公对公 USB

| FriendlyARM NanoPi A64 插公对公 USB已关闭评论

想用 sunxi-fel 刷机,还得用这种 usb 线,MicroUSB 线只能供电用

插之前

# lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 8087:0aa7 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

插之后

# lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 8087:0aa7 Intel Corp. 
Bus 002 Device 005: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

多了一行

Bus 002 Device 005: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode

树莓派 3B+ 使用串口终端输出

| 树莓派 3B+ 使用串口终端输出已关闭评论

USB2TTL 模块接树莓派 6、8、10 三个口

打开 /boot/config.txt 文件,在后面增加一行:dtoverlay=pi3-miniuart-bt

vim /boot/config.txt
dtoverlay=pi3-miniuart-bt

系统默认 serial1 链接 /dev/ttyAMA0,当配置这个 dtoverlay 后
serial1 链接到 /dev/ttyS0,serial0 链接到 /dev/ttyAMA0

更深层的动作触发原理,是在 udev 里搞的

使用 tuna 作为 repo 镜像

| 使用 tuna 作为 repo 镜像已关闭评论

Ubuntu 18.04 下 repo 安装很方便,但直接使用会由于网络问题被卡住,解决方法就是使用国内镜像站点

# apt install repo
$ export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

以上命令可以写在 ~/.bashrc 里以后就不用每次都手动执行了

利用 smbclient 扫描 Windows 共享目录

| 利用 smbclient 扫描 Windows 共享目录已关闭评论

# smbclient -L 192.168.1.2 -U Administrator
Enter SAMBA\Administrator's password:

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      远程管理
	C$              Disk      默认共享
	D$              Disk      默认共享
# smbclient -L 192.168.1.2 -U administrator%password

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      远程管理
	C$              Disk      默认共享
	D$              Disk      默认共享

使用 oh-my-zsh 及 gnzh 风格

| 使用 oh-my-zsh 及 gnzh 风格已关闭评论

CentOS系统:

# yum install zsh git curl

Ubuntu系统:

# apt install zsh git curl

然后访问:http://ohmyz.sh/,复制一键安装脚本

$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安装后编辑文件:~/.zshrc,修改风格为 gnzh

ZSH_THEME="gnzh"

Ubuntu tftpd server 使用教程

| Ubuntu tftpd server 使用教程已关闭评论

1,安装

# apt-get install tftpd-hpa

2,配置

# vi /etc/default/tftpd-hpa
TFTP_OPTIONS="--secure --verbose"
# systemctl restart tftpd-hpa

3,测试

# apt-get install tftp
$ tftp localhost
tftp> get foo
tftp> quit
# tail -f /var/log/syslog