编辑
2023-10-19
记录知识
0

RK3588S开发板编译

自己购买了RK3588S的firefly的开发板,这里记录firefly板子的sdk编译方法。

Wiki地址

https://wiki.t-firefly.com/zh_CN/ROC-RK3588S-PC/linux_compile.html#huo-qu-sdk

仓库地址

firefly的gitlab仓库地址如下

https://gitlab.com/firefly-linux

拉取SDK

repo init --no-clone-bundle --repo-url https://gitlab.com/firefly-linux/git-repo.git -u https://gitlab.com/firefly-linux/manifests.git -b master -m rk3588_linux_release.xml 这里拉取在我的环境会报错,主要如下

  1. DeprecationWarning: the imp module is deprecated 这里好像是和python3不支持import imp模块,如果默认是python3的情况下,则需要修改为

import importlib

  1. str object has no attribute decode 然后继续运行,会出现如上错误,这里错误是没办法decode, image.png 根据百度搜索可知,去掉git_config.py内的decode函数即可。

  2. firefly的repo推荐使用python2 通过提示可知道,repo推荐你去使用python2,这里修改python为python2即可

ln -sf /usr/bin/python2 /usr/bin/python

同步代码

跟着文档走,直接如下命令同步即可

.repo/repo/repo sync -c --no-tags
.repo/repo/repo start firefly --all

后续可以使用以下命令更新 SDK:

.repo/repo/repo sync -c --no-tags

切换分支

这里默认分支用tag: rk3588/linux_release_v1.1.1d。需要主动切一下

编译uboot

注意uboot的make.sh,这里如果默认的CROSS_COMPILSE_ARM64变量有问题需要根据实际情况修改,如果没问题就无需修改 注意:编译uboot需要rkbin仓库,如没有rkbin仓库,则编译会因为无法编译miniloader而失败

-CROSS_COMPILE_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- +# CROSS_COMPILE_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- +CROSS_COMPILE_ARM64=YOUR_PATH/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

编译命令如下

make rk3588_defconfig firefly-linux.config && ./make.sh

编译完成之后,会生成如下文件

uboot.img rk3588_spl_loader_v1.11.112.bin

修改

uboot通常不打开pcie的phy识别usb3.0,这里默认打开即可

diff --git a/configs/firefly-linux.config b/configs/firefly-linux.config index 503356b..3003d81 100644 --- a/configs/firefly-linux.config +++ b/configs/firefly-linux.config @@ -4,3 +4,4 @@ CONFIG_SPL_GPIO_SUPPORT=n CONFIG_DM_PCA953X=y CONFIG_SPL_FIT_IMAGE_KB=4096 CONFIG_CHECK_VERSION_CHOOSE_DTB=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y

firefly的日志比较烦人,可以去掉

diff --git a/drivers/power/regulator/fixed.c b/drivers/power/regulator/fixed.c index 50d75c6..172eb56 100644 --- a/drivers/power/regulator/fixed.c +++ b/drivers/power/regulator/fixed.c @@ -108,7 +108,7 @@ static int fixed_regulator_set_enable(struct udevice *dev, bool enable) struct fixed_regulator_platdata *dev_pdata = dev_get_platdata(dev); int ret; - printf("Firefly %s: dev='%s', enable=%d, delay=%d, has_gpio=%d\n", __func__, + debug("%s: dev='%s', enable=%d, delay=%d, has_gpio=%d\n", __func__, dev->name, enable, dev_pdata->startup_delay_us, dm_gpio_is_valid(&dev_pdata->gpio)); /* Enable GPIO is optional */

uboot提示Bus usb@xxxxxxxx: usb maximum-speed not found 比较奇怪,可以显示指明usb3为super speed,其实默认就是super speed。感觉不舒服的可以去掉(强迫症)

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-firefly-port.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-firefly-port.dtsi index dc1afd6..523353b 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-firefly-port.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3588-firefly-port.dtsi @@ -315,4 +315,5 @@ &usbdrd_dwc3_0 { dr_mode = "otg"; status = "okay"; + maximum-speed = "super-speed"; }; diff --git a/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi b/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi index 40a6986..e49f5fa 100644 --- a/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi +++ b/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi @@ -221,6 +221,7 @@ &usbhost_dwc3_0 { status = "okay"; dr_mode = "host"; + maximum-speed = "super-speed"; }; &vcc5v0_host { @@ -228,7 +229,7 @@ /delete-property/ regulator-min-microvolt; /delete-property/ regulator-max-microvolt; reset-delay-us = <200000>; - startup-delay-us = <1200000>; + //startup-delay-us = <1200000>; regulator-boot-on; gpio = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>; pinctrl-names = "default";

uboot阶段开机慢,这里regulator这里上电故意停了1.2S,去掉也不影响

diff --git a/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi b/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi index 40a6986..e49f5fa 100644 --- a/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi +++ b/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi &vcc5v0_host { @@ -228,7 +229,7 @@ /delete-property/ regulator-min-microvolt; /delete-property/ regulator-max-microvolt; reset-delay-us = <200000>; - startup-delay-us = <1200000>; + //startup-delay-us = <1200000>; regulator-boot-on; gpio = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>; pinctrl-names = "default";

编译内核

编译内核主要选择好了设备树和配置即可,rk3588s-roc-ps-v1.0的配置如下

export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- make rockchip_linux_defconfig rk3588_linux.config firefly-linux.config make roc-rk3588s-pc-mipi101-M101014-BE45-A1.img -j8

值得注意的是,我的开发板并不需要mipi dsi显示和csi摄像头,所以设备树需要更换一下。

编辑
2023-09-25
记录知识
0

Nextcloud通过docker配置

家里配置了docker版本的nextcloud,本来默认使用latest的版本,但是latest的版本有问题,一个是没办法显示上传时间,另一方面是上传大于1G的文件会失败。网上找了各种php设置参数的方法无果,最终决定使用24.0.1版本,基于如下

docker安装

docker直接通过apt安装,如下

apt install docker-ce docker-compose

我这里使用的版本为

docker-ce=5:24.0.5-1~ubuntu.20.04~focal docker-compose=1.25.0.1

Nextcloud安装

docker pull nextcloud:24.0.1
docker run -d --restart=no --name nc -p 80:80 -v /1T:/var/www/html nextcloud

初始化

这时候就可以登录本机的80端口进行初始化安装了。

所有IP访问

nextcloud默认只能运行trusted_domains内的ip访问,网上有解决方法如下

nextcloud/config/config.php
1 => preg_match('/cli/i',php_sapi_name())?'127.0.0.1':$_SERVER['SERVER_NAME'],

数据权限0770不安全

因为自己开放了权限,这里为了避免nextcloud的提示警告,需要设置一下

nextcloud/config/config.php
'check_data_directory_permissions' => false,

网盘数据重扫描

为了避免网盘数据内容和实际目录内容更新不一致的情况,每次开机我都进行了一次数据更新,命令如下

docker exec nc php occ files:scan --all

提高上传性能

网上说设置max_chunk_size 可以提高性能,我试过了没用,但是也设置了,懒得研究

docker exec nc php occ config:app:set files max_chunk_size --value 0

提高网页响应速度

按照官网说明,把定期任务设置cron,然后在crontab里面写5分钟的定时任务可以提高网页的响应速度,如下

在真实环境下
crontab -e */5 * * * * docker exec nc php cron.php

设置了反正还是那样子,nextcloud也就基本能用而已。

编辑
2023-09-19
记录知识
0

TestDisk工具

testdisk是一个开源的跨平台的磁盘数据恢复工具。最近使用usb转sata的线来传输硬盘数据,因为数据量比较大,导致windows操作系统的文件管理器卡死了。于是秉着windows的重启大法,将windows重启。但是windows重启半个小时还是失败,于是强制关机了。导致我的USB接口接的机械硬盘直接无法识别。通过搜索,了解到了这款强大的磁盘恢复工具

官方地址

https://www.cgsecurity.org/wiki/TestDisk_Download

上面是testdisk的官方下载地址,这里直接把zip包下载即可

使用

使用很简单,找到testdisk_win.exe点击即可

主要步骤

进入testdisk内

  1. 选择磁盘
  2. 选择磁盘本身的分区格式
  3. 选择Analyse
  4. 解析完成之后,进入正确的分区
  5. p可以列出文件
  6. a可全选,c可以恢复文件
  7. 恢复的文件会在testdisk默认提示的恢复目录中找到

至此可以恢复自己想要的文件。

关于自己

很不幸,此次我的硬盘无法正常恢复,主要原因是我运行了chkdsk命令来强制修复磁盘,导致磁盘内的文件均为chkdsk重排的文件。再加上这些内容是我刚毕业的时候的文件归档和一些学习资料而已,丢掉就丢掉吧,随它去吧。了解到这个好用的磁盘也是一个很幸运的事情。

编辑
2023-09-16
记录知识
0

光猫改桥接

家里的光猫默认安装人员会给你通过路由的方式安装,我这里安装之后,宽带这把分配我是1000M,wifi这边是1000M,但是网线接上去就是500M,这里其实有点怀疑是光猫自身的问题。 为了公网和提高响应,参考网上的说法,这里配置光猫路由方式为桥接方式。 主要步骤如下

设置光猫界面

联通的光猫默认超级管理员界面和密码

http://192.168.1.1/cu.html
CUAdmin

这样就正常打开了光猫界面,在界面里面,需要记住如下几个信息

VLAN ID
PPPOE的拨号账号密码

这里PPPOE的账号可用在联通APP看到,但是密码只能问联通安装员,这里默认发现是自己号码的后六位(可能是巧合吧)

关于设置光猫,就是吧基本配置中的上行链路配置从路由设置为桥接即可。

桥接路由器配置

我使用的小米的路由器,通过小米的管理地址192.168.31.1即可。 打开管理界面后,设置小米上网设置这里使用pppoe上网即可。
这里值得注意的是,这里的pppoe账号密码是从联通拿到的。需要单独联系
至此,已经完全设置好了桥接。

注意事项

我在处理的时候,因为错误的方法,手动把光猫恢复出厂设置了,这时候家里面就没办法通过光猫上网了,即使我设置的上行链路配置是对的。
实际上这是因为新的路由器需要先通过逻辑ID来注册,每家的逻辑ID不一致,我的如下

000000000000000012757054
逻辑ID我家未设置密码,密码不需要填写,直接注册即可。

遗留问题

我家遗留问题是光猫桥接的网口还是半折500M,这个还没解决。什么时候找联通小哥把光猫换了