MISC Q&A
Q1:编译报错undefined reference to 'FBD_Execute'
需要修改makefile添加LIBS += -lfbc_decode ,重新编译即可。
Q2:编解码规格
h264/h265编解码共用一组硬件,只要编码+解码总分辨率不超过规格即可。
SSR910Q:最大4K30
SSR920G:最大4K45
jpd/jpe为独立硬件,跟h264/h265也不一样,910/920规格一样,jpe最大4K30,jpd最大4K20.
Q3:查看芯片温度
-
代码方式获取
#include <fcntl.h> #include <stdio.h> #include <ctype.h> #include <sys/ioctl.h> #include <sys/types.h> #include <stdlib.h> #include <string.h> #define MSYS_IOCTL_MAGIC 'S' #define IOCTL_MSYS_READ_PM_TSENSOR _IO(MSYS_IOCTL_MAGIC, 0x78) int main(int argc, char* argv[]) { int fd=-1,ret; int temprature=0; fd=open("/dev/msys",O_WRONLY); if(-1==fd) { printf("fail to open msys device\n"); return 0; } while(1){ ret = ioctl(fd,IOCTL_MSYS_READ_PM_TSENSOR,&temprature); if(ret == 0)printf("temprature = %d\n",temprature); else printf("get temprature fail\n"); sleep(2); } return 0; }
-
命令行方式获取
cat /sys/devices/virtual/mstar/msys/TEMP_R
Q4:CPU Freq 频率如何调整?
系统启动时生成一个文件夹/sys/devices/system/cpu/cpu0/cpufreq,下面有几个节点:
cpuinfo_min_freq:平台支持的最小主频频率
cpuinfo_max_freq:平台支持的最大主频频率
cpuinfo_cur_freq/scaling_cur_freq:查看当前CPU主频
scaling_min_freq:允许调节器动态调节的范围最小值(只有允许调节器根据cpu loading动态调整cpu频率时才有用)
scaling_max_freq:允许调节器动态调节的范围最大值
scaling_governor:指定cpu频率调整模式(常用performance:固定cpu频率而不动态调节;ondemand:动态调整cpu频率)
检测CPU当前运行频率:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
调整CPU主频跑1G:
方法1
echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
方法2
cd sys/devices/system/cpu/cpu0/cpufreq/ echo userspace > scaling_governor echo 1200000 > scaling_max_freq echo 400000 > scaling_min_freq echo 1000000 > scaling_setspeed cat scaling_cur_freq
Q5:编译uboot报错CC:not found
$make mercury6_defconfig HOSTCC scripts/basic/fixdep /bin/sh: 1: cc: not found
这个是由于编译服务器没有安装gcc导致,安装一个即可解决,比如
yum -y install gcc (不同服务器安装方式可能有差异)
Q6:编译project报错Bad substitution
$./setup_config.sh configs/defconfigs/xvr_m6_spinand.glibc-9.1.0-squashfs.016a.512x512.bga2.demo_defconfig setup_config.sh: 17: Bad substitution #!/bin/sh
在ubuntu的shell下,实际上运行的是bash。而/bin/sh是到dash的软链接。project/setup_config.sh
第一行改成#!/bin/bash
即可正常。
Q7:增加或删除分区之后,文件系统起不来,kernel panic报错
需要按照新的分区(partition_layout.txt),调整rootfs分区(以及其他分区)的位置
Q8:cpu是否支持Interactive频率调节模式?
不支持,目前只支持linux自带的4种cpu调节模式。
userspace | 由用户空间程序通过scaling_setspeed文件修改频率 |
---|---|
powersave | 功耗优先策略,直接将频率设置为允许的最小值 |
ondemand | 根据CPU的当前使用率,动态的调节CPU频率 |
performance | 性能优先策略,固定cpu频率 |
如:echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governo
Q9:padmux.dtsi中将sdmmc1关闭之后,上电启动出现宕机。
if 0
//SDMMC1
endif
死机打印:
Hardware name: SStar Soc (Flattened Device Tree) task: dfd778c0 task.stack: defde000 PC is at MHal_GPIO_Set_High+0x12/0x38 LR is at Hal_CARD_PowerOff+0x24/0x38 [kdrv_sdmmc] pc : [<c0202a7e>] lr : [<bf11c12d>] psr: 200e0033 sp : defdfd04 ip : def9e600 fp : 00000000 r10: 00000001 r9 : df273940 r8 : bf1204c8 r7 : 00000001 r6 : 00000000 r5 : 00000000 r4 : 00325f45 r3 : c02a6748 r2 : c04387a4 r1 : fd000000 r0 : c02ab6f8 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment none Control: 70c5383d Table: 3ef9b3c0 DAC: 112e3090 Process insmod (pid: 663, stack limit = 0xdefde218)
问题原因:driver此时还认为需要注册两个sd device,然后导致的死机。
解决方法:在 mercury6.dtsi 文件中将 sdmmc的slot num改为1。