背景
换电脑,新装了系统,此时新装的WSL系统中的ubuntu系统已经没有ubunntu18这个选项了,RK提供的环境配置方法不能直接跑通,只能一个一个的解决后使用。
配置过程
按照文档配置
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt-get update sudo apt-get install gcc-arm-embedded scons clang-format astyle libncurses5-dev build-essential python-configparser
此时报错
oxlm@oxlm:~/workspace$ sudo apt-get install gcc-arm-embedded scons clang-format astyle libncurses5-dev build-essential python-configparser Reading package lists... Done Building dependency tree... Done Reading state information... Done Note, selecting 'libncurses-dev' instead of 'libncurses5-dev' E: Unable to locate package gcc-arm-embedded E: Unable to locate package python-configparser
去掉libncurses-dev,gcc-arm-embedded,python-configparser继续安装,这部分功能安装完毕
libncurses-dev安装
因为新的ubuntu中,这个库已经集成到libncurses5-dev库中,因此直接安装到那个库里面即可。
oxlm@oxlm:~$ sudo apt-get install libncurses5-dev Reading package lists... Done Building dependency tree... Done Reading state information... Done Note, selecting 'libncurses-dev' instead of 'libncurses5-dev' The following additional packages will be installed: libncurses6 Suggested packages: ncurses-doc The following NEW packages will be installed: libncurses-dev libncurses6 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 496 kB of archives. After this operation, 2761 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.ubuntu.com/ubuntu noble/main amd64 libncurses6 amd64 6.4+20240113-1ubuntu2 [112 kB] Get:2 http://archive.ubuntu.com/ubuntu noble/main amd64 libncurses-dev amd64 6.4+20240113-1ubuntu2 [384 kB] Fetched 496 kB in 3s (184 kB/s) Selecting previously unselected package libncurses6:amd64. (Reading database ... 46995 files and directories currently installed.) Preparing to unpack .../libncurses6_6.4+20240113-1ubuntu2_amd64.deb ... Unpacking libncurses6:amd64 (6.4+20240113-1ubuntu2) ... Selecting previously unselected package libncurses-dev:amd64. Preparing to unpack .../libncurses-dev_6.4+20240113-1ubuntu2_amd64.deb ... Unpacking libncurses-dev:amd64 (6.4+20240113-1ubuntu2) ... Setting up libncurses6:amd64 (6.4+20240113-1ubuntu2) ... Setting up libncurses-dev:amd64 (6.4+20240113-1ubuntu2) ... Processing triggers for man-db (2.12.0-4build2) ... Processing triggers for libc-bin (2.39-0ubuntu8.4) ...
gcc-arm-embedded安装
由于ppa:team-gcc-arm-embedded/ppa里面存储的交叉工具链只支持到ubuntu18.04,因此找不到这个工具,之后的版本,直接安装即可,安装命令如下:
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 tar xvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
wget的下载链接可以到 https://developer.arm.com/downloads/-/gnu-rm 里找,默认工具链为gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2,但这个包目前撤包了,无法弄,只能用最新的包。
把RTT_EXEC_PATH改为开机自动配置
nano ~/.bashrc
在弹出的界面的最后一行添加如下信息后保存退出:
export RTT_EXEC_PATH=/path/to/toolchain/gcc-arm-none-eabi-10.3-2021.10/bin
python-configparser安装
ubuntu24默认的python已经升级到了python3,装不了python2,但是可以使用折中的方式实现对python2的支持,安装方法为:
oxlm@oxlm:~/workspace$ sudo apt-get install python-is-python3 Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: python-is-python3 0 upgraded, 1 newly installed, 0 to remove and 45 not upgraded. Need to get 2684 B of archives. After this operation, 15.4 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu noble/main amd64 python-is-python3 all 3.11.4-1 [2684 B] Fetched 2684 B in 1s (4102 B/s) Selecting previously unselected package python-is-python3. (Reading database ... 46988 files and directories currently installed.) Preparing to unpack .../python-is-python3_3.11.4-1_all.deb ... Unpacking python-is-python3 (3.11.4-1) ... Setting up python-is-python3 (3.11.4-1) ... Processing triggers for man-db (2.12.0-4build2) ...
代码下载
git clone https://github.com/RT-Thread/rt-thread.git
编译验证
由于github上rk开源的版本和rk内部提供的商用版对应的版本有较大差异,scons --menuconfig依赖的库有差异,在rtt官方版本使用scons --menuconfig会报错,因此就不用scons生成新配置并重新生成工程了,实际上在linux下也不需要再去生成工程,都是编译时直接通过SConscript决定编哪些文件。
oxlm@oxlm:~/workspace/rt-thread/bsp/rockchip/rk2108$ scons scons: Reading SConscript files ... Newlib version: 4.1.0 scons: done reading SConscript files. scons: Building targets ... scons: building associated VariantDir targets: build CC build/applications/main.o CC build/board/board/common/board_base.o CC build/board/board/common/iomux_base.o CC build/board/board/rk2108_evb/board.o CC build/board/board/rk2108_evb/iomux.o CC build/common/drivers/drv_cache.o CC build/common/drivers/drv_clock.o CC build/common/drivers/drv_gpio.o /home/oxlm/workspace/rt-thread/bsp/rockchip/common/drivers/drv_gpio.c:304:5: warning: initialization of 'rt_err_t (*)(struct rt_device *, rt_base_t, rt_uint8_t, void (*)(void *), void *)' {aka 'long int (*)(struct rt_device *, long int, unsigned char, void (*)(void *), void *)'} from incompatible pointer type 'rt_err_t (*)(struct rt_device *, rt_int32_t, rt_uint32_t, void (*)(void *), void *)' {aka 'long int (*)(struct rt_device *, long int, long unsigned int, void (*)(void *), void *)'} [-Wincompatible-pointer-types] 304 | pin_attach_irq, | ^~~~~~~~~~~~~~ /home/oxlm/workspace/rt-thread/bsp/rockchip/common/drivers/drv_gpio.c:304:5: note: (near initialization for 'pin_ops.pin_attach_irq') /home/oxlm/workspace/rt-thread/bsp/rockchip/common/drivers/drv_gpio.c:306:5: warning: initialization of 'rt_err_t (*)(struct rt_device *, rt_base_t, rt_uint8_t)' {aka 'long int (*)(struct rt_device *, long int, unsigned char)'} from incompatible pointer type 'rt_err_t (*)(struct rt_device *, rt_base_t, rt_uint32_t)' {aka 'long int (*)(struct rt_device *, long int, long unsigned int)'} [-Wincompatible-pointer-types] 306 | pin_irq_enable, | ^~~~~~~~~~~~~~ /home/oxlm/workspace/rt-thread/bsp/rockchip/common/drivers/drv_gpio.c:306:5: note: (near initialization for 'pin_ops.pin_irq_enable') CC build/common/drivers/drv_heap.o CC build/common/drivers/drv_uart.o /home/oxlm/workspace/rt-thread/bsp/rockchip/common/drivers/drv_uart.c: In function 'rockchip_uart_control': /home/oxlm/workspace/rt-thread/bsp/rockchip/common/drivers/drv_uart.c:352:32: warning: variable 'dev' set but not used [-Wunused-but-set-variable] 352 | const struct HAL_UART_DEV *dev; | ^~~ CC build/common/drivers/interrupt.o CC build/common/drivers/io.o CC build/common/drivers/reset.o CC build/common/rk_hal/rk_hal/lib/CMSIS/Device/RK2108/Source/startup_rk2108.o CC build/common/rk_hal/rk_hal/lib/CMSIS/Device/RK2108/Source/system_rk2108.o CC build/common/rk_hal/rk_hal/lib/bsp/RK2108/hal_bsp.o CC build/common/rk_hal/rk_hal/lib/hal/src/cru/hal_cru.o CC build/common/rk_hal/rk_hal/lib/hal/src/cru/hal_cru_rk2108.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_base.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_base_ex.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_cache.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_debug.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_dwdma.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_gpio.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_nvic.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_pd.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_pl330.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_pwm.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_pwr.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_systick.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_timer.o CC build/common/rk_hal/rk_hal/lib/hal/src/hal_uart.o CC build/common/rk_hal/rk_hal/lib/hal/src/pinctrl/hal_pinctrl.o CC build/common/rk_hal/rk_hal/lib/hal/src/pinctrl/hal_pinctrl_iofunc.o CC build/common/rk_hal/rk_hal/lib/hal/src/pinctrl/hal_pinctrl_v2.o CC build/common/rk_hal/rk_hal/lib/hal/src/pm/hal_pm_cpu.o CC build/common/rk_hal/rk_hal/lib/hal/src/pm/hal_pm_rk2108.o CC build/kernel/components/dfs/dfs_v1/filesystems/devfs/devfs.o CC build/kernel/components/dfs/dfs_v1/src/dfs.o CC build/kernel/components/dfs/dfs_v1/src/dfs_file.o CC build/kernel/components/dfs/dfs_v1/src/dfs_fs.o CC build/kernel/components/dfs/dfs_v1/src/dfs_posix.o CC build/kernel/components/drivers/core/device.o CC build/kernel/components/drivers/ipc/completion_comm.o CC build/kernel/components/drivers/ipc/completion_up.o CC build/kernel/components/drivers/ipc/condvar.o CC build/kernel/components/drivers/ipc/dataqueue.o CC build/kernel/components/drivers/ipc/pipe.o CC build/kernel/components/drivers/ipc/ringblk_buf.o CC build/kernel/components/drivers/ipc/ringbuffer.o CC build/kernel/components/drivers/ipc/waitqueue.o CC build/kernel/components/drivers/ipc/workqueue.o CC build/kernel/components/drivers/pin/dev_pin.o CC build/kernel/components/drivers/serial/dev_serial.o CC build/kernel/components/finsh/cmd.o CC build/kernel/components/finsh/msh.o CC build/kernel/components/finsh/msh_file.o CC build/kernel/components/finsh/msh_parse.o CC build/kernel/components/finsh/shell.o CC build/kernel/components/libc/compilers/common/cctype.o CC build/kernel/components/libc/compilers/common/cstdlib.o CC build/kernel/components/libc/compilers/common/cstring.o CC build/kernel/components/libc/compilers/common/ctime.o CC build/kernel/components/libc/compilers/common/cunistd.o CC build/kernel/components/libc/compilers/common/cwchar.o CC build/kernel/components/libc/compilers/newlib/syscalls.o CC build/kernel/libcpu/arm/common/atomic_arm.o CC build/kernel/libcpu/arm/common/div0.o CC build/kernel/libcpu/arm/common/showmem.o AS build/kernel/libcpu/arm/cortex-m4/context_gcc.o CC build/kernel/libcpu/arm/cortex-m4/cpuport.o CC build/kernel/src/clock.o CC build/kernel/src/components.o CC build/kernel/src/cpu_up.o CC build/kernel/src/defunct.o CC build/kernel/src/idle.o CC build/kernel/src/ipc.o CC build/kernel/src/irq.o CC build/kernel/src/klibc/kerrno.o CC build/kernel/src/klibc/kstdio.o CC build/kernel/src/klibc/kstring.o CC build/kernel/src/klibc/rt_vsnprintf_tiny.o CC build/kernel/src/klibc/rt_vsscanf.o CC build/kernel/src/kservice.o CC build/kernel/src/mem.o CC build/kernel/src/memheap.o CC build/kernel/src/mempool.o CC build/kernel/src/object.o CC build/kernel/src/scheduler_comm.o CC build/kernel/src/scheduler_up.o CC build/kernel/src/thread.o CC build/kernel/src/timer.o AS /home/oxlm/workspace/rt-thread/bsp/rockchip/common/drivers/drv_cache_gcc.o LINK rtthread.elf Memory region Used Size Region Size %age Used FLASH: 0 GB 16 MB 0.00% SRAM_I: 48424 B 1 MB 4.62% SRAM_D: 1 MB 1 MB 100.00% arm-none-eabi-objcopy -O binary rtthread.elf rtthread.bin arm-none-eabi-size rtthread.elf text data bss dec hex filename 48360 872 999320 1048552 fffe8 rtthread.elf scons: done building targets. oxlm@oxlm:~/workspace/rt-thread/bsp/rockchip/rk2108$
编译部分通过,但由于rk2108的烧录需要转化成img文件烧录,开源部分貌似没看到这些信息,因此暂时就没烧录进去验证了。仅仅在商业版的代码中编译烧录验证,确认无异常。