[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
[置顶] Linux Lab v1.4 升级部分内核到 v6.10,新增泰晓 RISC-V 实验箱支持,新增最小化内核配置支持大幅提升内核编译速度,在单终端内新增多窗口调试功能等Linux Lab 发布 v1.4 正式版,升级部分内核到 v6.10,新增泰晓实验箱支持
[置顶] 泰晓社区近日发布了一款儿童益智版 Linux 系统盘,集成了数十个教育类与益智游戏类开源软件国内首个儿童 Linux 系统来了,既可打字编程学习数理化,还能下棋研究数独提升智力
Linux Lab 真板开发日志(2):macOS 和 Windows 环境之无串口开发
如何通过 ssh 开发真板
By 贾献华 of TinyLab.org Jan 16, 2021
前言
本文所采用的 i.MX6ULL Pro 开发板可以直接从 泰晓科技自营店 选购。
Docker 下串口识别问题
前文提到,在 macOS
和 Windows
下 Docker
是无法直接访问串口的,我们可以通过 ssh
使用网络访问,第一步就是要知道真板的 ip
地址。
先通过 Host
机访问串口,Windows
可以从设备管理器找到 COM 口,macOS
可以通过 /dev/usb*
识别。
// microUSB 带网口
// usb 转串口
$ ls -l /dev/cu.usb*
/dev/cu.usbmodem1234fire56783
/dev/cu.usbserial-144430
// Ctrl + A + K: exit screen
// Ctrl + A + D: exit screen, can resume
$ screen -L /dev/cu.usbmodem1234fire56783 115200
// resume
$ screen -r
通过主机串口获取 IP
地址
接下来通过串口获取到板子的 IP
地址:
debian@npi:~$ ifconfig | grep 192
inet 192.168.1.137 netmask 255.255.255.0 broadcast 192.168.1.255
inet 192.168.7.2 netmask 255.255.255.252 broadcast 192.168.7.3
在 Linux Lab 下无串口开发真板
识别到 IP
地址就好办了,跟着文档 操作就好。
$ sed -i -e "s/nand/mmc/g" boards/arm/ebf-imx6ull/Makefile
$ make BOARD=arm/ebf-imx6ull
$ make kernel-build
$ make kernel-upload
$ make login
这里会提示需要配置 BOARD_SERIAL or BOARD_IP
。
Makefile:2923: *** This is a real hardware board, please buy one from https://shop155917374.taobao.com and configure BOARD_SERIAL or BOARD_IP in /labs/linux-lab/boards/arm/ebf-imx6ull/Makefile before uploading. Stop.
我们通过 ssh
访问,可以简单的设置环境变量。
$ export BOARD_IP=192.168.1.137
make login
还需要传递 BOARD_USER
和 BOARD_PASS
。
默认是以 root:linux-lab
登录的,新的开发板还没有配置好,我们要覆盖默认值。
$ make login BOARD_IP=192.168.1.137 BOARD_USER=debian BOARD_PASS=temppwd
修改默认密码并配置登录提示
接下来为了方便管理,把密码改成 linux-lab
,顺便修改提示。
debian@npi:~$ sudo sed -i -e "s/temppwd/linux-lab/g" /etc/{issue,issue.net}
[sudo] password for debian:
debian@npi:~$ sudo -s
root@npi:/home/debian# passwd root
New password: linux-lab
Retype new password: linux-lab
passwd: password updated successfully
root@npi:/home/debian# sudo sed -i -e "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config
root@npi:/home/debian# sudo service sshd restart
root@npi:/home/debian# passwd debian
New password: linux-lab
Retype new password: linux-lab
passwd: password updated successfully
先看一下当前内核版本:
root@npi:/home/debian# uname -a
Linux npi 4.19.71-imx-r1 #1stable SMP PREEMPT Thu Nov 26 13:47:40 CST 2020 armv7l GNU/Linux
这是野火 2020年11月26 发布的预览版。
上传 zImage, dtb 和 modules
按照文档操作即可。
- 上传内核
ubuntu@linux-lab:/labs/linux-lab$ make kernel-upload
Building dtb ...
DTS: /labs/linux-lab/src/linux-stable/arch/arm/boot/dts/imx6ull-mmc-npi.dts
DTB: /labs/linux-lab/build/arm/linux-v4.19.35-ebf-imx6ull/arch/arm/boot/dts/imx6ull-mmc-npi.dtb
DTC arch/arm/boot/dts/imx6ull-mmc-npi.dtb
env PATH=/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make O=/labs/linux-lab/build/arm/linux-v4.19.35-ebf-imx6ull -C /labs/linux-lab/src/linux-stable ARCH=arm LOADADDR= CROSS_COMPILE=arm-linux-gnueabi- V= CONFIG_INITRAMFS_SOURCE= -j4 zImage
GEN ./Makefile
Using /labs/linux-lab/src/linux-stable as source for kernel
CALL /labs/linux-lab/src/linux-stable/scripts/checksyscalls.sh
CHK include/generated/compile.h
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
LOG: Upload kernel image from /labs/linux-lab/build/arm/linux-v4.19.35-ebf-imx6ull/arch/arm/boot/zImage to 192.168.1.137:/boot/vmlinuz-4.19.35+
- 上传设备树
ubuntu@linux-lab:/labs/linux-lab$ make dtb-upload
LOG: Upload dtb image from /labs/linux-lab/build/arm/linux-v4.19.35-ebf-imx6ull/arch/arm/boot/dts/imx6ull-mmc-npi.dtb to 192.168.1.137:/boot/dtbs/4.19.35+/imx6ull-mmc-npi.dtb
- 上传模块
ubuntu@linux-lab:/labs/linux-lab$ make modules-upload
LOG: Upload modules from /labs/linux-lab/boards/arm/ebf-imx6ull/bsp/root/2020.02//rootfs/lib/modules/4.19.35+ to 192.168.1.137:/lib/modules/4.19.35+
Warning: Permanently added '192.168.1.137' (ECDSA) to the list of known hosts.
Debian GNU/Linux 10
embedfire.com Debian Image 2020-11-26
Support/FAQ: www.firebbs.cn/forum.php
default username:password is [debian:linux-lab]
sending incremental file list
modules.alias
...
kernel/sound/usb/snd-usbmidi-lib.ko
sent 6,699,045 bytes received 2,782 bytes 2,680,730.80 bytes/sec
total size is 6,688,486 speedup is 1.00
更换内核配置并重启
组合动作
ubuntu@linux-lab:/labs/linux-lab$ make boot
LOG: Configure new kernel and dtbs images
LOG: Rebooting via ssh
LOG: Login via ssh protocol
root@npi:~# Connection to 192.168.1.137 closed by remote host.
make: *** [Makefile:3670: _boot] Error 255
真板一重启,ssh
就断开连接了,所以要手动连接。
分解动作
- 设置启动项
ubuntu@linux-lab:/labs/linux-lab$ make boot-config
LOG: Configure new kernel and dtbs images
- 重启真板
ubuntu@linux-lab:/labs/linux-lab$ make reboot
LOG: Rebooting via ssh
- 重新登录
ubuntu@linux-lab:/labs/linux-lab$ make login BOARD_IP=192.168.1.137
LOG: Login via ssh protocol
- 查看内核版本
root@npi:~# uname -a
Linux npi 4.19.35+ #3 SMP PREEMPT Fri Jan 15 09:30:59 CST 2021 armv7l GNU/Linux
内核版本已经改为 4.19.35+
。
开发内核模块
直接使用 Linux Lab
提供的 hello
模块。
$ make modules m=hello
$ make modules-install m=hello
$ make modules-upload
验证一下。
ubuntu@linux-lab:/labs/linux-lab$ make login
LOG: Login via ssh protocol
root@npi:~# sudo modprobe hello
root@npi:~# lsmod | grep hello
hello 16384 0
root@npi:~# dmesg | grep hello
[ 393.911872] hello: loading out-of-tree module taints kernel.
[ 393.936401] hello module init
总结
通过简单的设置一下 BOARD_IP
,通过 ssh
也可以像 串口
一样简洁方便的进行开发。
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |
Read Album:
- Linux Lab 发布 v0.7 正式版,新增 Linux Lab 实验盘,一分钟内即可开展内核实验
- Linux Lab 真盘开发日志(6):体验内存编译的用法和好处
- Linux Lab 真盘开发日志(5):体验透明压缩带来的可用容量翻倍效果
- Linux Lab 真盘开发日志(4):在台式机、笔记本和 macBook 上即插即用
- Linux Lab 真盘开发日志(3):在 Linux 下直接启动 Linux Lab Disk,当双系统使用