“F.A.Q汇总”的版本间的差异
(→系统功能问题) |
(→系统裁剪定制) |
||
第83行: | 第83行: | ||
若要适配已支持的模组之外的型号,请自行移植内核驱动和HAL层代码,参考《Axx Android WiFi-BT配置说明书》。 | 若要适配已支持的模组之外的型号,请自行移植内核驱动和HAL层代码,参考《Axx Android WiFi-BT配置说明书》。 | ||
+ | |||
+ | |||
+ | A: 如何修改LRADC按键的键值(Android)? | ||
+ | |||
+ | Q: Linux Input键值需要修改驱动源码(对于A33)/DTS文件(对于A64/A40i/A133),Android按键映射需要修改android/device/softwinner/板型/config/sunxi-keyboard.kl,参考资料《Android xx SDK快速移植指南》。 | ||
==系统功能问题== | ==系统功能问题== |
2022年6月22日 (三) 09:06的版本
F.A.Q汇总
源码编译/烧录
A: A133 Android 10编译完后打包(运行pack命令)时报“flags:FATAL unable to parse provided options with getopt.”错误。
Q: A133的BSP中打包脚本调用了awk,而awk工具分mawk和gawk两个版本,Ubuntu自带的为mawk而脚本使用gawk的语法编写的,导致脚本parse命令行时出错。解决方法:
$ sudo apt-get install gawk
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本,强制设置为gawk:
$ sudo update-alternatives --config awk
A: A40i Android 7.1编译时报错“No Jack server running.”
Q: 不要关闭当前编译的终端窗口!直接运行:
$ jack-admin start-server
然后继续make即可。
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了?
Q: 在longan中执行./build.sh config时,BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件,将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样,或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。
A: 虚拟机编译Android固件报错“out of memory”?
Q: Android编译比较消耗CPU和内存资源,请为虚拟机分配更多的RAM空间!或尝试减少编译线程(make -j4或-j2)。
A: A133为何烧录过“安全固件”后无法再次烧录固件?
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse,此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件,无法烧录其他固件了。建议不要编译和烧录“安全固件”(pack -v命令生成的)!
A: A40i编译Lichee报错awk: line2: function strtonum never defined
Q: 同A133的问题一样,安装并替换Ubuntu系统的awk为gawk即可。
A: 只修改FEX文件是否需要重新编译源码?
Q: 不需要,仅执行pack即可。
系统裁剪定制
A: 如何将自己的APP打包到Android固件中?为何用固件修改器植入APP后APP无法正常打开?(带lib.so库的提示找不到对应的库文件)
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中,导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包,具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。(文档可在资料光盘中查找)
A: 如何启用BSP自带的串口助手等小工具?(如何把原厂自带的apk编译进固件?)
Q: apk/源码位置:
A33 Android 4.4:android/device/softwinner/polaris-common/prebuild
A64 Android 6.0:android/device/softwinner/common/prebuild
A40i Android 7.1:android/vendor/aw
A133 Android 10.0:android/vendor/aw/public
在其目录下找到apk文件或app源码所在位置的Android.mk,查看其中的LOCAL_MODULE字段,然后将其写入android/device/softwinner/版型/版型.mk中,例如:
PRODUCT_PACKAGES += \
ESFileExplorer \
SerialPort
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。
A: 如何适配不同的WiFi/BT模组?
Q: 源码已适配过多款WiFi/BT模组,在“android/device/softwinner/板型”目录下,将对应型号模组的BoardConfig.mk替换掉原有文件,例如适配RTL8188EU时将BoardConfig.mk.8188eu覆盖原BoardConfig.mk,然后make clean/make即可。
对于A40i:除了替换对应的BoardConfig.mk还需要替换init.device.rc;
对于A133:除了替换对应的BoardConfig.mk还需要替换board.dts和sys_config.fex(位于longan/device/config/chips/a133/configs/c3)
若要适配已支持的模组之外的型号,请自行移植内核驱动和HAL层代码,参考《Axx Android WiFi-BT配置说明书》。
A: 如何修改LRADC按键的键值(Android)?
Q: Linux Input键值需要修改驱动源码(对于A33)/DTS文件(对于A64/A40i/A133),Android按键映射需要修改android/device/softwinner/板型/config/sunxi-keyboard.kl,参考资料《Android xx SDK快速移植指南》。
系统功能问题
A: A133休眠后无法唤醒?
Q: 调试发现AC107驱动会导致休眠功能异常,目前尚未能解决此问题,若需要休眠功能的用户可暂时屏蔽AC107,方法如下:
使用固件修改器(DragonFace 2.6.1)或直接修改源码中的kernel dts配置,找到节点sound@3,将其status改为disabled即可。
A: A133 Android 10使用移远EC20通信模块,可以看到信号强度,但无4G图标且无法上网?
Q: 当前移远RIL库适配存在问题,修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk,将对应语句改为下面的样子:
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml
保存后make installclean后重新make生成固件。
(移远EC200T/S等RNDIS拨号方式的不受影响)
A: 核心板的FEL引脚可否作GPIO使用?
Q: 不可以。
A: 核心板是否支持SD卡烧录固件?
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡,具体使用方法请参考原厂文档,这里暂时不做进一步支持。
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”?
Q: Android Go 低内存设备存在多种动画或者功能默认不启用,比如应用窗口化功能。若要解除此限制,可使用固件修改器修改build.prop,将ro.config.low_ram由true改为false,或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。
参考资料:Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮?如何改变8152的指示灯显示状态?
Q: 可在驱动内修改(内核目录/drivers/net/usb/r8152.c)找到下列代码:
if (tp->version == RTL_VER_01) {
ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);
ocp_data &= ~LED_MODE_MASK;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);
}
在其后面添加:
//led0=link100 led1=link10+link100+active
ocp_data = 0xB2;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);
保存后重新编译lichee/longan和android后烧录验证。
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器,写入对应的值可改变LED的指示状态,具体可以参考其Datasheet(文件:RTL8152B.pdf)。
A: Android/Linux文件系统损坏导致系统无法正常启动?
Q: 一般出现这种问题时都是eMMC/SPINOR正在写入数据时掉电引起的。请首先确保电源稳定可靠,切勿出现电源反复启停振荡的情况(一般客户采用外部后备电源如超级电容等的场景时容易出现这种情况)。Linux系统可以将rootfs挂为ro只读分区,单独划分一个rw分区用于用户数据存储。
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用?
Q: 不可以!该时钟输出仅供AP6212等WiFi+BT模组使用,休眠/关机状态下无输出。
A: 必须要使用外部RTC么?片上RTC不可用么?核心板VCC-RTC是输入还是输出?
Q: 全志片上RTC功耗较高,使用纽扣电池的情况下续航不能保证,建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出,与CPU的片上RTC供电引脚相连,只要DCIN/USBVBUS/VBAT其中任一电源有电,该LDO即输出3V3电源,以供RTC使用。
A: 触摸(其他外设)驱动能否直接编译到内核而不编译成.ko模块?
Q: 可以,但依然建议编译为.ko模块,以便方便适配不同的板型(可以通过脚本选择insmod不同的驱动模块)。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小!
A: 为何音量键(LRADC按键)乱跳?
Q: LRADC引脚为高阻态,需通过100k上拉至AVCC(3.0V),避免采集到干扰信号导致按键误触发。
A: 关于电池/便携式应用:
Q: 核心板支持3.7V锂电池供电,只需将电池接到VBAT引脚(对于A33,VBAT-EXT引脚在板内通过0R电阻与VBAT相连)即可。同时需要在FEX/DTS文件里修改电池参数(RDC-内阻 CAP-容量)使之匹配,否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环,以使PMIC正确计算电量,并且不可再断开电池。
若电池自带温度探头,可将其接到TS引脚,同时修改FEX/DTS文件使能PMIC温度检测(默认关闭,以防不接温度探头时干扰信号误唤醒系统)。
核心板的PS引脚为电源输出,其输出电压等于DCIN或USBVBUS或VBAT,且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用,并且需要加MOS管开关以防关机后外设继续消耗电量。