富瀚ffmpeg移植
编译脚本:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138rm -rf ffmpeg# sudo chown $USER:$USER /outputoutput=${PWD}/outputrm -rf outputmkdir -p ./outputbuild_ffmpeg() {cd ffmpeg# make distcleanexport PATH=/home/tuling/.FuHan-arm-l ...
map
mapstd::map<key_type, value_type> myMap;
注意事项
map的key是唯一的,不能重复。2、注意访问如果不存在会自动创建一个元素。所以尽量是用迭代器访问。(避免map[key]方式)
vector
vector操作方法:sort、remove_if、find、erase等。
AAC音频格式详解
1、格式头头名字叫ADTS,如下格式:
1aac_data:ff f9 6c 40 16 ff fc 1 8 9e d8 12 76 2c 12 41 e8 ff 0 43 5d 43 49 48 5 92 b1 b2 85 ae ce 47 65 93 15 c6 cb a0 a8 82 b7 a 4e e0 cf 15 99 b0 66 fc c6 79 5e 6a 7e 74 93 1e 4d 9b 5c 4e f2 ca 7d d1 3a 77 b3 6b 29 54 51 bc fe 9e 72 77 91 19 ab 18 85 ad 10 9c 56 b6 87 6b d4 40 14 e5 d5 99 a 4b 1f 5d
以ff f9开头。储存了音频的采样率、声道数、采样位数等信息。长度为7个字节。
如果要将 AAC 数据通过 RTP 发送,一般都需要 ADTS。如果要写入 .aac 文件供播放器识别,也需要 ADTS。如果要写入 MP4,则应去掉 ADTS,改用 AAC LATM 或容器本身的描述方式。
第一个字节固定ff。
mx6ull的uboot--2023版本移植
获取uboot源码https://github.com/nxp-imxnxp官方维护的仓库拿到源码,编译。略
采用和我芯片一样的模板编译编译mx6ull_14x14x_evk_defconfig编译后直接搜索mx6ull_14x14x_evk_defconfig
和之前移植有一些心得arch/arm/dts中,添加自己的设备树文件后,要在这个文件夹下有个makefile中添加上自己的设备树这里改好还要去arch/arm/mach-imx/Kconfig中添加自己的设备树配置项,不然设备树还是编译不到。里面还要配置自己板子的Kconfig
mx6ull的linux移植
下载源码https://github.com/nxp-imxnxp官方维护的仓库
编译编译要选择的模板目录载arch/arm/configs/下,模板选择imx_v6_v7_defconfig
tftp采用网络下载的方法,
1sudo apt-get install tftpd-hpa # Debian/Ubuntu
创建目录然后修改配置文件
1sudo vim /etc/default/tftpd-hpa
下面为配置
123456789101112131415 cat /etc/default/tftpd-hpa# /etc/default/tftpd-hpa# 两个配置TFTP_USERNAME="tftp"TFTP_DIRECTORY="/home/ygc/Desktop/project/tftp"TFTP_ADDRESS=":69"TFTP_OPTIONS="-1 -c -s"TFTP_USERNAME="tftp"TFTP_DIRECTORY= ...
mx6ull编译器选择
mx6ull编译器选择https://github.com/nxp-imxnxp官方维护的仓库
属于arm架构,armv7a系类。支持硬件浮点运算。需要系统。可选的编译器:在Linaro官网下载交叉编译工具链:https://www.linaro.org/downloads/arm官方的:https://developer.arm.com/downloads/-/gnu-a
mx6ull的uboot--2024版本移植
存在的问题,uboot的tftp下载速度太慢
移植uboothttps://github.com/nxp-imxnxp官方维护的仓库拿到源码,编译。略
编译。拿到板子, 选一个厂家的板子的配置,编译。
1make mx6ull_14x14_evk_defconfig
编译完成后直接搜索mx6ull_14x14_evk_defconfig
找到配置文件,复制一份。在配置文件中修改:
12345678910# 板子名字CONFIG_TARGET_MX6ULL_NARO=y# CONFIG_LDO_BYPASS_CHECK is not setCONFIG_SYS_I2C_MXC_I2C1=yCONFIG_SYS_I2C_MXC_I2C2=yCONFIG_DM_GPIO=y# 修改设备树CONFIG_DEFAULT_DEVICE_TREE="imx6ull-naro"
这个文件中最终要的就是指定设备树和boot的dtb文件,以及修改设备树名字。剩下的就是根据编译过的文件创建一份,准备自己的修改
下面为编译的脚本
1234567891011121314151617181 ...
交叉编译器
交叉编译器详解交叉编译工具链的命名规则反映了目标架构、操作系统、ABI特性及工具链提供商等关键信息。理解命名规则有助于快速识别工具链的适用场景和特性。以下是常见规则及示例:
一、标准GNU工具链命名格式1<架构>-<厂商>-<系统>-<ABI>-<工具>
核心字段含义:
架构(Architecture)目标芯片的架构类型,常见值:
arm/aarch64:ARM 32/64位架构
x86_64/i686:x86 64/32位架构
riscv64/riscv32:RISC-V 64/32位架构
mips/powerpc:MIPS/PowerPC架构
厂商(Vendor)工具链提供商或定制者,常见值:
none:通用裸机(无操作系统)工具链
linux:针对Linux系统的工具链
unknown:未知/通用厂商
特定厂商名(如 uclibc、musl)
系统(System)目标操作系统或环境:
linux:适用于Linux系统 ...