这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【分享开发笔记,赚取电动螺丝刀】ubuntu24.04下RK2108编译环境搭建

共3条 1/1 1 跳转至

【分享开发笔记,赚取电动螺丝刀】ubuntu24.04下RK2108编译环境搭建

工程师
2025-03-14 21:38:10     打赏

背景

        换电脑,新装了系统,此时新装的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文件烧录,开源部分貌似没看到这些信息,因此暂时就没烧录进去验证了。仅仅在商业版的代码中编译烧录验证,确认无异常。




关键词: RK2108     ubuntu24.04     编译     环境         

专家
2025-03-15 11:43:45     打赏
2楼

感谢分享


院士
2025-03-16 11:50:20     打赏
3楼

还好,我是让出来了个ubuntu台式机来做嵌入式开发,


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]