Hello! , I’m Nyarukov 👋

我有一个梦,也许有一天,灿烂的阳光能照进黑暗森林 !

Linux_stty的使用

使用 stty 命令设置串口参数 stty 命令用于配置和显示终端设备的设置,特别是串口设置。在串口通信中,正确的参数配置对于数据传输的准确性和效率至关重要。 1. 显示串口参数信息 要查看指定串口设备的当前配置参数,可以使用以下命令: stty -F /dev/ttyACM0 -a 该命令显示所有与指定串口 /dev/ttyACM0 相关的当前配置参数。 2. 设置串口参数信息 可以使用 stty 命令配置串口的各种参数,如速率、数据位、校验位等。 设置为7位数据位,无校验,1位停止位,无回显: stty -F /dev/ttyACM0 speed 115200 cs7 -parenb -cstopb -echo speed 115200:设置波特率为115200。 cs7:设置数据位为7。 -parenb:禁用校验位。 -cstopb:设置1位停止位。 -echo:禁用回显。 设置为8位数据位,1位停止位,偶数校验位: stty -F /dev/ttyACM0 speed 115200 cs8 -cstopb parenb -parodd cs8:设置数据位为8。 parenb:启用校验位。 -parodd:设置为偶数校验。 3. 串口发送数据 要向指定串口发送数据,可以使用以下命令: echo "1234456" > /dev/ttyACM0 该命令将字符串 “1234456” 发送到 /dev/ttyACM0 设备。 4. 显示串口接收数据 可以在后台显示从串口接收的数据: cat /dev/ttyACM0 & 该命令在后台实时显示从 /dev/ttyACM0 接收到的数据。...

May 27, 2024 · 1 min · 166 words · nyaruko

使用busybox构建根文件系统

介绍 Linux的根文件系统是指Linux操作系统中最顶层的文件目录。 在Linux中,文件系统是以树状结构进行组织的,根文件系统是整个文件系统的根目录。根文件系统通常称为"/"(前斜杠)。所有其他文件和目录都是根文件系统的子目录。根文件系统包含了Linux操作系统所需的所有文件和目录,包括系统内核、配置文件、库文件、程序和命令行工具等。 常用目录介绍 /bin - 存放二进制可执行文件,如 ls、grep 等。 /boot - 存放引导程序和内核相关的文件。 /dev - 存放设备文件。 /etc - 存放系统配置文件和启动脚本。 /home - 存放用户家目录。 /lib - 存放系统库文件。 /media - 存放挂载的外部设备,如 USB 闪存盘、CD-ROM 等。 /mnt - 通常用于挂载其他分区或设备。 /opt - 可选安装文件的目录,如第三方软件。 /proc - 存放内存中的信息,如系统进程信息。 /root - root 用户的家目录。 /sbin - 存放系统管理员用的二进制可执行文件。 /tmp - 存放临时文件。 /usr - 存放可以被多个用户共享的程序和数据。 /var - 存放可变的数据,如系统日志文件、网站数据等。 下载BusyBox。 可以从BusyBox官网(https://www.busybox.net/downloads/)下载最新版的BusyBox源代码。 这里下载1.35.0版本 配置 解压进入目录 sudo tar xvf busybox-1.35.0.tar.bz2 cd busybox-1.35.0 busybox 配置选项 defconfig,默认配置 allyesconfig,全选配置 menuconfig,图形化配置 使用图形化配置 make menuconfig 配置交叉编译器: Location:...

December 30, 2022 · 1 min · 182 words · nyaruko

Ubuntu 升级Python 3.6 到 Python 3.9

Ubuntu升级 Python 3.6 到 Python 3.9 安装必要的软件包 首先,你需要安装一些必要的软件包,以便在你的系统中编译 Python。输入以下命令来安装这些软件包: Copy code sudo apt-get install build-essential libbz2-dev libssl-dev libreadline-dev libsqlite3-dev 下载 Python 3.9 的源代码 接下来,你需要下载 Python 3.9 的源代码。你可以使用以下命令来下载 Python 3.9 的最新版本: Copy code wget https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz 解压 Python 3.9 的源代码 下载完成后,你需要解压 Python 3.9 的源代码。输入以下命令来解压源代码: Copy code tar xvJf Python-3.9.4.tar.xz 编译和安装 Python 3.9 现在,你可以编译并安装 Python 3.9。首先,进入 Python 3.9 的源代码目录,然后运行以下命令来编译 Python 3.9: Copy codecd Python-3.9.4 ./configure make 这可能需要几分钟的时间。 安装 Python 3.9 编译完成后,你可以使用以下命令来安装 Python 3.9:...

December 28, 2022 · 1 min · 111 words · nyaruko

ARMv7 UBOOT Start.s文件分析

ARMv7 UBOOT Start.s文件分析 reset: /* Allow the board to save important registers */ b save_boot_params 由 reset函数跳转到 **save_boot_params **函数。 b: 跳转不返回。 bl: 跳转返回 (提前将下一条指令存入 **lr **寄存器,在执行玩当前函数后会执行 mov pc, lr ,跳回 **lr **寄存器保存的地址)。 ENTRY(save_boot_params) b save_boot_params_ret @ back to my caller ENDPROC(save_boot_params) .weak save_boot_params 这个函数实际跳转到 save_boot_params_ret 函数。 ENTRY 宏展开得(.type save_boot_params STT_FUNC), .type **是 **GCC** 伪指令,说明**save_boot_params是函数。 **ENDPROC **宏展开得 (size save_boot_params, -save_boot_params),由当前地址减去标号地址,计算 **save_boot_params **函数大小。 .weak 关键字,说明后面的 **save_boot_params **为弱标号,如果链接器在其他地方发现 **save_boot_params **,则这里作废,如果没有发现,则使用这里的。 save_boot_params_ret: /* * disable interrupts (FIQ and IRQ), also set the cpu to SVC32 mode, * except if in HYP mode already */ mrs r0, cpsr and r1, r0, #0x1f @ mask mode bits teq r1, #0x1a @ test for HYP mode bicne r0, r0, #0x1f @ clear all mode bits orrne r0, r0, #0x13 @ set SVC mode orr r0, r0, #0xc0 @ disable FIQ and IRQ msr cpsr,r0 将 cpsr 状态寄存器存入 r0 将寄存器 r0 中的值与 0X1F 进行与运算,结果保存到 r1 寄存器中,提取cpsr寄存器的低5位,用来设置 **CPU ** 模式 判断 **CPU ** 当前是否处于 HYP 模式 如果 **CPU ** 不是 HYP 模式,则清楚 r0 低5位 将 **CPU ** 切换到 SVC32 模式, CPU 可以使用 SoC 的各种资源 关闭 FIQ 和 IRQ,为了保证 uboot 启动过程不允许被打断 将 r0 的值存回 cpsr 寄存器 #if !...

December 24, 2022 · 3 min · 602 words · nyaruko

Uboot移植之编写自己的boot程序

编译、链接、汇编过程 注意 !,本开发板为正点原子IMX6ULL_Mini开发板,不同点为程序链接地址不同 预编译(Precompile) 将头文件、宏的值展开带到程序里 编译 (Compile) main.c → main.s 汇编(Assembly) main.s→main.o 链接(Link) 将多个xxx.o文件拼接起来,链接成不带后缀的main(ELF)文件 此文件在Linux中可直接运行,但是在单片机中还需要生成为二进制文件 生成二进制文件 将main(ELF)中的无用信息剥离,变为main.bin 编写boot 第一个我们要进行汇编。把mystart.s变成mystart.o。把mylowleve变成mylowleve.o 进行链接。是把这两个文件统合。我们把他起个名字叫myboot这个文件是elf格式的。 生成二进制文件,把myboot中的段信息,调试信息去掉,变为myboot.bin 制作镜像,使用正点原子提供的**(imxdownload),将myboot.bin变为myboot.imx**并烧录到SD卡中 mystart.s b reset b reset b reset b reset b reset b reset b reset b reset reset: bl gpio_out bl led_on mov r0, r1 //跳过流水线 mov r1, r2//跳过流水线 mov r2, r3//跳过流水线 mov r3, r4//跳过流水线 mov r4, r5//跳过流水线 1: b 1b //死循环 gpio_out: /* 1、使能所有时钟 */ ldr r0, =0X020C4068 /* CCGR0 */ ldr r1, =0XFFFFFFFF str r1, [r0] ldr r0, =0X020C406C /* CCGR1 */ str r1, [r0] ldr r0, =0X020C4070 /* CCGR2 */ str r1, [r0] ldr r0, =0X020C4074 /* CCGR3 */ str r1, [r0] ldr r0, =0X020C4078 /* CCGR4 */ str r1, [r0] ldr r0, =0X020C407C /* CCGR5 */ str r1, [r0] ldr r0, =0X020C4080 /* CCGR6 */ str r1, [r0] /* 2、设置GPIO1_IO03复用为GPIO1_IO03 */ ldr r0, =0X020E0068 /* 将寄存器SW_MUX_GPIO1_IO03_BASE加载到r0中 */ ldr r1, =0X5 /* 设置寄存器SW_MUX_GPIO1_IO03_BASE的MUX_MODE为5 */ str r1,[r0] /* 3、配置GPIO1_IO03的IO属性 *bit 16:0 HYS关闭 *bit [15:14]: 00 默认下拉 *bit [13]: 0 kepper功能 *bit [12]: 1 pull/keeper使能 *bit [11]: 0 关闭开路输出 *bit [7:6]: 10 速度100Mhz *bit [5:3]: 110 R0/6驱动能力 *bit [0]: 0 低转换率 */ ldr r0, =0X020E02F4 /*寄存器SW_PAD_GPIO1_IO03_BASE */ ldr r1, =0X10B0 str r1,[r0] /* 4、设置GPIO1_IO03为输出 */ ldr r0, =0X0209C004 /*寄存器GPIO1_GDIR */ ldr r1, =0X0000008 str r1,[r0] mov pc ,lr //从子程序返回 mylowleve....

December 11, 2022 · 2 min · 364 words · nyaruko