Uboot
tftp 烧写
以下地址和大小仅适用于当时的分区表。预填充 0xff 要使用 mw.b,count 才按字节计;默认 mw 通常按 32 位单元写入,相同 count 会覆盖四倍的内存范围。烧写前还需确认 TFTP 成功且镜像大小未超过分区。
烧写内核(2560KB)
mw.b 80008000 ff 280000;tftpboot 80008000 uImage_918
sf probe 0;sf erase 70000 280000; sf write 80008000 70000 280000
烧写根文件系统(3072KB)
mw.b 80008000 ff 300000;tftpboot 80008000 rootfs_36_2026_09_18
sf probe 0;sf erase 2F0000 300000 ;sf write 80008000 2F0000 300000
烧写app(16384KB)
mw.b 80008000 ff 1000000;tftpboot 80008000 appfs_2026_09_18
sf probe 0;sf erase 5F0000 1000000 ;sf write 80008000 5F0000 1000000
#给算法分配内存
setenv bootargs 'console=ttyS1,115200n8 mem=128M@0x0 rmem=96M@0x8000000 nmem=32M@0xE000000 root=/dev/mtdblock3 rootfstype=squashfs ro init=/linuxrc ignore_loglevel mtdparts=jz_sfc:384k(boot),64k(logo),2560k(kernel),3072k(rootfs),16384k(appfs),-(para) lpj=11968512'
make
媒体
音频
一帧的时长 = 一帧采样点的个数 / 采样率
采样率:8000Hz,一帧采样点个数:320。可以计算出一帧的时长是40ms
音频帧
音频帧其实只是把很多采样点打包起来,ADC实际上就是不断的产生数据:
sample0
sample1
sample2
sample3
sample4
...
但是软件如果每产生 1 个 sample 就通知应用程序一次,效率会非常低,所以驱动通常把一定数量的采样点聚合成一个 Audio Frame:
连续 PCM:
0 1 2 3 4 5 ............ 319
└───────────────────────────────┘
Frame 0
320 samples
40 ms
320 321 322 .................... 639
└───────────────────────────────┘
Frame 1
320 samples
40 ms
A1的音频帧参数
- 采样率:8000Hz
- 位深:16 Bit
- 单声道
- 1帧为320个采样点
一帧的大小 :320 *2 Byte =640Bytes