Every piece of all creatures in this freezing world, are racing for freedom.
服务器选择 国内默认服务器一般是"cn.pool.ntp.org", 然而稳定性不好, 也许用的人太多? ntp.aliyun.com相对更稳定. ntp端口号 ntp端口号是123,看起来跟假的一样... ntp服务器测试 linux下使用ntpdate -q cn.ntp.org.cn测试
使用空白模板登入, 发现就是一个web版本的vscode! 居然也带了terminal, 那就意味着操作系统! 查看一下这个系统的配置: 安装了python3.10.8, node 19.9.0 用户名codespace CPU Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz 双核 内存4GBMemTotal: 4020176 kB MemFree: 138564 kB MemAvailable: 2357852 kB Buffers: 353748 kB Cached: 1967260 kB 硬盘信息Filesystem Size Used Avail Use% Mounted on overlay 32G 13G 18G 41% / tmpfs 64M 0 64M 0% /dev shm 64M 8.0K 64M 1% /dev/shm /dev/root 29G 21G 8.1G 73% /usr/sbin/docker-init /dev/sda1 16G 288K 15G 1% /tmp /dev/loop3 32G 13G 18G 41% /workspaces 操作系统Linux version 5.15.0-1039-azure (buildd@bos03-amd64-016) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #46-Ubuntu SMP Mon May 22 15:18:07 UTC 2023 修改默认的软件 从上面可以看出来是docker容器, 这儿有一篇文章讲如何修改默认的软件:https://blog.csdn.net/boling_cavalry/article/details/125110236
文件结构 根目录下有bl2028n_sdk_release和qcloud-iot-bk-wifi两个目录, 编译是在qcloud-iot-bk-wifi中进行 编译命令
虚拟机方式 使用虚拟机virtualbox安装Ubuntu18.04（只有64位版本），为编译速度更快，可以启用尽量多的核心；设置好和windows的共享文件夹；给默认用户加上sudoer权限，运行visudo,打开的文件中，在root ALL=(ALL:ALL) ALL下仿照写一行，如我的用户名是rnd：root ALL=(ALL:ALL) ALL rnd ALL=(ALL:ALL) ALL 下载arm-none-eabi交叉编译器5.4-2016q3版本（据说最新可以用到2019年的版本，反正试过2023年的12.2是不行的），解压缩到一个目录。 解压缩可以用tar命令（tar -xvf filename.tar）或（tar -xzvf filename.tar.gz），也可以直接用ubuntu的文件管理器，右键选择解压缩即可。 注意解压缩会有一个问题，导致在链接elf文件时候报错：root@ubuntu-bl2028n:/media/sf_share/qcloud-iot-bk-wifi# make -j4 make: Warning: File '/media/sf_share/bl2028n_sdk_release/.config' has modification time 2.1 s in the future LD ../out/beken2028n.elf arm-none-eabi-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found compilation terminated. ../bl2028n_sdk_release/application.mk:336: recipe for target 'application' failed make: *** [application] Error 1 原因是gcc-arm-none-eabi-5_4-2016q3\lib\gcc\arm-none-eabi\5.4.1\liblto_plugin.so文件和so.0文件时链接到liblto_plugin.so.0.0.0文件上的，所以给liblto_plugin.so.0.0.0复制两份改成上面的liblto_plugin.so和liblto_plugin.so.0文件名。 然后在系统启动文件/etc/profile中加入： export ARM_GCC_TOOLCHAIN="/media/sf_share/gcc-arm-none-eabi-5_4-2016q3/bin/" export PATH="$PATH:$ARM_GCC_TOOLCHAIN" arm交叉编译器5.4只有32位，在64位的linux上运行会奇怪的错误no such file or ...，需要安装支持软件,安装前先update： ubuntu:apt-get update apt-get install gcc-multilib g++-multilib CentOS: dnf install glibc-devel.i686 dnf比yum先进, 建议改用 如果是腾讯物联网项目，进入qcloud-iot-bk-wifi目录，运行make clean，在运行make -j8（8是虚拟机的CPU核心数）进行编译； 编译出来的文件在out目录中，烧录all***.bin文件。烧录方式是打开bk_writer_V1.63.exe文件，选择bl2028n，选择固件，点击烧录即可。 使用开发板烧录，需要用USB-C供电，另外接一个USB-TTL转接器，接到GND-TXD1-RXD1上来烧录。 开发板简介： CEN_KEY是重置按钮 UART1（R/TXD1）用作Log输出，和MCU通讯的话请使用UART2 docker方式(推荐) docker安装起来比虚拟机快很多. 可以先安装docker desktop, 然后取一个镜像, 并运行容器, 我还是用之前腾讯给的esp编译的centos 8镜像, 在windows命令行下: # 获取镜像 docker pull hubertxxu/esp8266_build:0.1 # 下一句设置共享目录 docker run --name esp -v path/to/host/folder:/path/to/container/folder -dt hubertxxu/esp8266_build:0.1 # 进入docker bash环境 docker exec -it esp bash # 安装32位兼容包(等同于ubuntu的gcc-multilib) dnf install glibc-devel.i686 # 跟ubuntu一样, 修改环境变量 `~`目录下的`.bashrc`增加ARM_GCC_TOOLCHAIN和PATH, 运行即可. 注意,和上面ubuntu不同的是修改`/etc/profile`没有作用 编译提速 使用共享文件夹的方式编译会发现速度极慢, 大约会慢100倍. 所以需要提速. 经过测试, 将arm toolchain和源码复制到虚拟机自己的文件夹,而不是用共享文件夹编译的话速度就非常快. 如果为了自动化, 你需要编辑.bashrc或者其他脚本文件来实现. docker编译(更新+推荐) 我在hub.docker.com上创建了docker编译镜像, 获取: docker pull darceye/bl2028n_buildenv:v0.0.1, 安装好了环境, 并做了加速,将sdk已经复制到docker中. 为便于编译, 在host主机(以windows为例,嗯如果本身是linux也不用这么麻烦了)建立一个blq.bat文件: @echo off set bl2028n_build_docker=your_container_name if "%1" == "build" ( docker cp ./bl2028n_qcloud_sdk/qcloud-iot-bk-wifi %bl2028n_build_docker%:/home/bl2028n/bl_sdk/ docker exec -it esp bash -c " cd /home/bl2028n/ && ./bl2028nmake" docker cp %bl2028n_build_docker%:/home/bl2028n/bl_sdk/out/all_2M.1220.bin ./build/bl2028n_FW.bin ) if "%1" == "init" ( docker start %bl2028n_build_docker% ) if "%1" == "docker" ( docker exec -it %bl2028n_build_docker% bash ) if "%1" == "" ( echo BLQ: Frossky BL2028N Qcloud C building Tool. Ver1.0-20230619 echo Usage^: echo blq: show this help. echo blq init: init docker container echo blq docker: into docker env echo blq build: build firmware into `build/` folder ) @echo on 将相关sdk放在bl2028n_qcloud_sdk/目录中, 就可以按上面的提示进行自动编译, 并将编译后bin文件复制到build/中.