15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

归档标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

月度归档 11月 29, 2023

【Openwrt】脚本自动部署守护进程

#!/bin/bash
openwrt(){
	echo "***************************************************"
	echo "*			Welcom to OpenWrt Platform				*"
	echo "***************************************************"

    # check_deps
    local source_dir="$PWD"
    local service_file="/etc/init.d/rulex.service"
    local executable="/usr/local/rulex"
    local working_directory="/usr/local/"
    local config_file="/usr/local/rulex.ini"
    local db_file="/usr/local/rulex.db"
cat > "$service_file" << EOL
#!/bin/sh /etc/rc.common

START=180

USE_PROCD=1

start_service() {
	procd_open_instance
	procd_set_param command "$executable run -config=$config_file -db=$db_file" 
	procd_set_param respawn 0
	procd_close_instance
}

stop_service(){
	service_stop "$executable"
}
EOL
	
	mkdir -p $working_directory
    chmod +x $source_dir/rulex
    cp -rfp "$source_dir/rulex" "$executable"
    cp -rfp "$source_dir/rulex.ini" "$config_file"
    
	chmod 777 $service_file
	$service_file enable 
	$service_file start 
	
    if [ $? -eq 0 ]; then
        echo "[√] Rulex service has been created and extracted."
    else
        echo "[x] Failed to create the Rulex service or extract files."
    fi
    exit 0
}

【Openwrt】lm-sensors-3-6-0 cannot find -liconv

当我们编译lm-sensors模块试会发现提示错误cannot find -liconv。

通过log分析试没有把相应的libconv.a库拷贝到lm-sensors lib里。

解决方式:

cp ./build_dir/target-aarch64_generic_musl/libiconv/libiconv.a ./build_dir/target-aarch64_generic_musl/lm-sensors-3-6-0/lib/

【golang】go版本上级

一、删除旧版本

sudo rm -rf /usr/local/go
sudo apt-get remove golang
sudo apt-get remove golang-go
sudo apt-get autoremove

二、方法一

sudo add-apt-repository ppa:longsleep/golang-backports 
sudo apt-get install golang-go

如果要安装指定版本:
sudo apt-get install golang-1.11-go

如果add-apt-repository不存在,通过以下命令安装进行按照:

sudo apt-get install software-properties-commonsudo 
apt-get update

三、方法二

sudo snap install go --classic

【Linux】实现spidev驱动添加

一、功能配置

1、make menuconfig

2、修改设备树

&spi3 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&spi3m1_cs0 &spi3m1_pins>;
        spi_test@00 {
                compatible = "rockchip,rk-spidev";
                reg = <0>;
                spi-max-frequency = <5000000>;
        };
};

3、修改驱动文件

vim spidev.c
增加compatible 匹配设备树参数。

static const struct spi_device_id spidev_spi_ids[] = {
        { .name = "dh2228fv" },
        { .name = "ltc2488" },
        { .name = "sx1301" },
        { .name = "bk4" },
        { .name = "dhcom-board" },
        { .name = "m53cpld" },
        { .name = "spi-petra" },
        { .name = "spi-authenta" },
        { .name = "rk-spidev" },
        {},
};
static const struct of_device_id spidev_dt_ids[] = {
        { .compatible = "rohm,dh2228fv", .data = &spidev_of_check },
        { .compatible = "lineartechnology,ltc2488", .data = &spidev_of_check },
        { .compatible = "semtech,sx1301", .data = &spidev_of_check },
        { .compatible = "lwn,bk4", .data = &spidev_of_check },
        { .compatible = "dh,dhcom-board", .data = &spidev_of_check },
        { .compatible = "menlo,m53cpld", .data = &spidev_of_check },
        { .compatible = "cisco,spi-petra", .data = &spidev_of_check },
        { .compatible = "micron,spi-authenta", .data = &spidev_of_check },
        { .compatible = "rockchip,rk-spidev", .data = &spidev_of_check },
        {},
};

二、测试spidev设备

【docker】docker迁移位置

在系统长期运行器件,会出现硬盘使用占满的情况。这时候需要考虑docker容器迁移。步骤如下:

一、增加硬盘,挂载位置

1、创建硬盘

fdisk /dev/sdb

2、格式化硬盘

mkfs.ext4 /dev/sdb1

3、挂载硬盘

mkdir /mnt/tHDD
mount /dev/sdb1 /mnt/tHDD

4、自动挂载硬盘

blkid /dev/sdb1

vim /etv/fstab

UUID=e3746c50-ace6-4c88-bcf7-175ebbdcf13f /mnt/tHDD   ext4 error=remount-ro 0 

二、迁移docker文件

1、拷贝文件

cp -rfp /var/lib/docker /mnt/tHDD

注意:cp 指令需要添加p参数,防止拷贝过程中被修改文件权限。

2、修改配置

vim /etc/docker/daemon.json

{

"data-root": "/mnt/tHDD/docker",
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]

}

3、重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:如果是多dockers,最好重启机器。

【RK3568】 idbloader.img 打包【RK3568】

一、早期打包方式

cd u-boot
tools/mkimage -n ${PLAT} -T rksd -d ${TPL_BIN} idbloader.img
cat ${SPL_BIN} >> idbloader.img

二、现在打包方式

1、脚本方式

cd uboot
# 打包官方提供的ddr与miniloader的bin文件
./make.sh --idblock ../rkbin/RKBOOT/xxxx.ini 
# 打包自己编译的tpl与spl的bin文件
./make.sh --idblock --tpl --spl ../rkbin/RKBOOT/xxxx.ini 

2、mkimage方式

./tools/mkimage -n ${PLAT} -T rksd -d ${TPL_BIN}:${SPL_BIN} idblock.bin

3、生成的 idblock.bin 与 idbloader.img 是一样的,重命名就行:

mv idblock.bin idbloader.img

【RK3568】修改调试串口波特率

一、修改DDR初始化阶段波特率

1、查看配置使用哪个DDR驱动

vim $(RKSDK)/rkbin/RKBOOT/RK3568MINIALL.ini 

由配置文件可知我们使用的 ddr bin 文件是:rk3568_ddr_1560MHz_v1.18.bin

2、修改波特率

修改$(RKSDK)/rkbin/tools/ddrbin_param.txt 波特率参数

3、更新DDR驱动文件


cd $(RKSDK)/rkbin/tools
./ddrbin_tool ddrbin_param.txt ../bin/rk35/rk3568_ddr_1560MHz_v1.13.bin //bin文件的名字需要和 RK3568MINIALL.ini 文件中保持一致。

二、修改uboot波特率

vim configs/rk3568_defconfig

三、修改内核波特率(注意此处openwrt系统)

openwrt是直接通过boot.scr获取内核启动地址及其他配置参数的,所以只需要重新更新波特率参数,重新生成boot.scr就可以了。话说boot.scr是由mkimage工具根据boot.cmd参数生成的。

1、创新boot-bsp.cmd文件

# 写入以下内容
#setenv bootargs console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
#setenv bootm_boot_mode sec
#setenv machid 1029
#load mmc 0:1 0x41000000 uImage
#load mmc 0:1 0x41d00000 script.bin
#bootm 0x41000000

# 第一行setenv命令,设定了变量bootargs(启动参数)为:通过tty0和ttyS0串口输出启动信息;启动失败延迟5秒重启,根文件在TF卡的第二分区,可读写;
# 第二行指定了bootm 模式
# 第三行指定解析设备树
# 第四行指定了将压缩后的内核uImage加载到 0x41000000 的位置
# 第五行指定了将 script.bin 加载到 0x41d00000 的位置
# 第六行为从加载地址启动内核的命令

part uuid mmc ${devnum}:3 uuid
setenv bootargs "console=ttyS2,115200 console=tty2 earlycon=uart8250,mmio32,0xfe660000 root=PARTUUID=${uuid} rw rootwait"

load mmc ${devnum}:2 ${fdt_addr_r} rockchip.dtb
load mmc ${devnum}:2 ${kernel_addr_r} kernel.img

booti ${kernel_addr_r} - ${fdt_addr_r}

2、生成boot.scr文件

./tools/mkimage -C none -A arm -T script -d boot-bsp.cmd boot.scr