linux嵌入式

ssh可以连上,但ping不通PC解决

![image-20221108110433594](新建 Markdown File.assets/image-20221108110433594-16678766778911.png)

新增环境变量时

source /etc/profile  更新文件

工具集

天坑

从GitHub克隆项目,要在linux编译就在linux克隆,windows编译就在windows克隆,否则会报奇怪的错误

Linux克隆GitHub项目可以先转到gitee,然后克隆gitee的

reboot重启失败问题

由于项目需要,于是用了奋战了一个晚上到3点,终找到了问题所在, 其实就是watchdog的寄存器偏移不对,最后只要修改sunxi-f1c100s.dtsi

把wdt: watchdog@1c20ca0 {
compatible = “allwinner, suniv-f1c100s-wdt”,
“allwinner, sun4i-a10-wdt”;
reg = <0x1c20ca0 0x20>;
}
改为
wdt: watchdog@1c20ca0 {
compatible = “allwinner, suniv-f1c100s-wdt”,
“allwinner, sun6i-a31-wdt”;
reg = <0x1c20ca0 0x20>;
}

这样就能正常重启了,我使用的是5.2的内核,其它的内核有可能不存在这个情况
存储器使用的是TF卡,如果是SPI NAND,请修改驱动退出4byte模式

联网

#输入以下指令后planckpi就可以上网了
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null
sudo iptables -P FORWARD ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.2.0/24
————————————————
版权声明:本文为CSDN博主「LyCraft98」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41253675/article/details/124898690

笔记

注册设备时,会在sys/class目录下创建设备文件夹。

/proc目录下存放了一些系统相关的信息,我们可以通过
/proc/interrupts文件来查看当前所有的中断号注册情况以及中断触发次数。

load mmc 0:1 0x80008000 zImage 这里的 0:1表示第 0个 emmc的第一个分区,首先因为我们的开发板上只有一个

bootz 0x80008000 - 0x80c08000 命令,这个命令是启动内核
的命令,其中带有两个参数,第一个参数为内核的存放位置,第二个参数为设备树的存放位置。

早期版本的内核没有引入设备树,因此对于早期的内核一般使用的是 bootm,其命令格式为 bootm+内核地址

注意:
bootz命令的格式是: bootz空格 0x80008000空格 -空格 0x80c08000,注意 -左右有空格 。 bootcmd环境变量若要执行多条命令,则每个命令之间用 隔开 。

注册设备

手动

mknod [设备目录] [设备类型] [主设备号] [次设备号]
mknod /dev/led0 c 1 0

自动

1. 创建一个类
static struct class *led_class led_class = class_create(THIS_MODULE, "led_class");
2. 创建一个设备
static struct device *led0; led0 = device_create(led_class,NULL,devno,NULL,"led0");
//同样在设备注销的时候会自动删除设备,也会一起删除该设备类,这个过程也是自动完成的。因
//此在驱动开发过程中需要进行删除相关的设备类:
3. 删除设备
device_destroy(led_class,led_dev_num);
4. 删除类
class_destroy(led_class);

注册字符设备


#linux