展讯
1.IO配置
u-boot15/board/spreadtrum/xxx/pinmap-xxx.c
{REG_PIN_SDA2, BITS_PIN_AF(0)},
{REG_MISC_PIN_SDA2, BITS_PIN_DS(1)|BIT_PIN_WPUS|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_Z},
REG_PIN_(管脚名字) 如gpio88,查找pinmap表格,就可以知道相应的管脚名。
BITS_PIN_AF(n) n=0,1,2,3功能 具体功能可参考SCxxxx_GPIO_Spec_Vxxx.xlsx
BITS_PIN_DS 驱动能力(ata测试中导线长或者高速信号可以调整)
BIT_PIN_WPUS 强上拉(强是指电流,选择阻值较小的电阻)
BIT_PIN_NULL 没强上拉
BIT_PIN_WPU 上拉(初始电平为高)
BIT_PIN_WPD 下拉(初始电平为低)
BIT_PIN_NUL 既不上拉也不下拉
BIT_PIN_SLP_AP 跟随AP休眠
BIT_PIN_SLP_ALL 可能是跟随BP休眠
BIT_PIN_SLP_NONE 不休眠
BIT_PIN_SLP_NUL 休眠时既不上拉也不下拉
BIT_PIN_SLP_WPD 休眠时下拉
BIT_PIN_SLP_WPU 休眠时上拉
BIT_PIN_SLP_OE 休眠时输出
BIT_PIN_SLP_IE 休眠时输入
BIT_PIN_SLP_Z 休眠时高阻
2.按键
gpio作为按键
配置为BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_IE},这个配置出错可能导致低电流大
keypad模块的按键
KEYIN作为为列
KEYOUT作为行
如KEYOUT0,KEYIN2,那么
sPRD,row = <0>;
sprd,column = <2>;
3.lcd
xxx-common.dtsi包含的使用的默认屏
u-boot15/drivers/video/sprdfb/lcd/makefile
u-boot15/drivers/video/sprdfb/sprdfb_panel.c
u-boot15/drivers/video/sprdfb/sprdfb_spi.c(spi的可能需要修改这里的SPI_RS(选择发数据还是命令)脚)
u-boot15/include/configs/xxxx.h
如果使用spi类型的屏,spi这个展讯这里默认是收发用一根线的,当然也可配置成标准的SPI线
如果开启了te脚检测spi_te_gpio,屏也要开启te,否则会出现卡顿的情况
4.增大音量,工具Audiotester,可参考
https://wenku.baidu.com/view/e454011a580216fc700afdf3.html
5.当按键或触摸屏不好用时,可安装应用Vysor来控制屏幕(ubuntu系统可以在谷歌浏览器安装Vysor插件)
6.调整分区大小
直接修改device/sprd/sharkle/xxx/xxx.xml中size的大小(这里单位是M),同时修改BoardConfig.mk镜像的大小。
7.编译与烧写
编译uboot make bootloader
烧写uboot fastboot flash uboot u-boot-sign.bin
烧写system sudo fastboot -S 100M flash system system.img
Android9.0出现了dtb和dtbo镜像,编译方法make dtbimage ,make dtboimage ,烧写方法
fastboto flash dtb dtb.img,fastboot flash dtbo dtbo.img
也可以使用展讯工具ResearchDownload,勾选fdl1和fdl2和相应的镜像,来烧写相应的镜像。
8.gpio和ldo调试
cat /d/gpio可以查看引脚状态,包括gpio_request有没有申请成功,引脚现在的状态(输入或输出,高电平或低电平)
gpio-49 ( |xxxx1 ) in(输入) hi(高电平)
gpio-138 ( |xxxx2 )out(输出) lo(低电平)
/d/regulator可查看ldo的使用情况,以及配置的最大和最小电压
9.暗码
*#*#83781#*#*,还有一个*#*#83782#*#*,进入工程模式(EngineerMode.apk)
*#*#83789#*#*,测试模式
*#*#2266#*#*,进入sgps测试,选择INF,打开sgps switch,可在SA见到卫星信号。
10.cat /proc/meminfo只能看到部分内存容量(有部分没算在这)
11.展讯网站
提问题http://222.66.158.139:2008/cqweb/#
资料https://isupport.spreadtrum.com/iSupport/APPly/faq_list#tab-
12.EXINT的管脚有硬件去抖的功能,如使用EXINT12,pinmap配置成EXINT12,
gpiOS = <&ap_eic 12 1>;
13.刚开机,串口打印一点就停止输出了,找到对应的dts文件,将loglevel=1改成loglevel=8或者adb shell,
echo 8 >/proc/sys/kernel/printk
14.测试休眠底电流的时候,userdebug版本要关闭modem log,否则无法正常休眠。
15.展讯平台sysdump https://blog.csdn.net/mike8825/article/details/85039187
16.射频和通话参数存放于sharkle_pubcp_customer_Feature_Phone_nvitem.bin(可ota差分升级),校准参数存放于product分区。
17.进入USB下载方式(这里的加号是短路的意思)
1.KEYIN0+KEYOUT0;2.KEYIN0+GND;3.U1TXD+GND
18.spi串口屏可以读寄存器来实现esd protect,可以让展讯提供补丁 。
19.配置内核kuconfig/kmconfig/kdconfig
20.展讯工具介绍https://blog.csdn.net/qq_23922117/article/details/81144364
21.pwma,pwmb,pwmc的基地址分别是0x40260000,0x40260020,0x40260040,dts默认只配置了一路
pwma有多个引脚可以设置,但只能选其中一个作为pwma,pwmb,pwmc类似,要参考sprd背光pwm来使用,否认会出现休眠死机的情况。对于背光使用非默认pwm,需要进行修改uboot,路径u-boot15/board/spreadtrum/xxx/sprd_bl.c,默认是这样
#define PWM_INDEX 1
__raw_bits_or(((PWM_INDEX << 1) << 4), REG_AON_APB_APB_EB0); //PWMx EN
即第一路pwm,假如要使用第0路,需配置成
#define PWM_INDEX 0
__raw_bits_or(((1 << PWM_INDEX) << 4), REG_AON_APB_APB_EB0);m
参考
22.抓取modem日记的时候,由于sdcard的log会丢失,可以用展讯的Logel_for_TD工具来抓取(该工具在源码压缩包下,进入工程模式,打开pc service,然后通过连接手机,复现现象,保存log即可)23.
23.摄像头移植https://blog.csdn.net/mike8825/article/details/89056310
由于平常在linux下工作,bbat工具只能在window上运行,先运行bbat工具,手机断电接usb,见出现的usb未知设备(virtualbox会提示未知设置,不能分配到虚拟机)分配到虚拟机上即可。
25.EXINT有0~15共16个中断口可以选用,其中
EXINT0~7:支持电平中断具有debounce功能,时钟源是RTC_1K(1ms),所以只有1ms的脉冲才能触发中断,普通中断应用建议接EXINT0~7
EXINT8~15:支持边沿和电平中断 具有debounce/lat/async/sync mode4种模式,一般uS级的窄脉冲使用latch mode来触发,如某些指纹IC中断信号
async mode:使用RTC_32K作为时钟源
debounce mode:使用RTC_1K作为时钟源,有硬件去抖
latch mode:不需要时钟源,直接锁存输入信号
sync mode:使用PCLK作为时钟源
普通的gpio在深睡下,只能用低/高电平唤醒系统,可以用irq_set_irq_type来切换中断状态
对于按键来说,由于信号的不确定性,只能用EXINT或者pmic上的irq来唤醒系统,使用电平方式的gpio会导致系统死机
文章最后发布于: 2018-07-09 21:00:55