- 博客(22)
- 收藏
- 关注
原创 RK3568配1366*768 LVDS屏画面很暗问题
最近用RK3568配一个18.5的1366*768 LVDS屏,发现屏幕亮度很暗,开始以为是背光问题,但是怎么调背光都没有明显的变化。另外尝试拔掉屏线后,屏幕的白屏亮度还是很亮的,跟接屏线输出白场画面时的亮度完全不是一个等级,所以可以排除硬件问题。重新查看屏参配置文件,发现一个比较可疑的参数bus-format = <MEDIA_BUS_FMT_RGB666_1X7X3_SPWG>;这个表示的是18bit VESA模式,而用的屏应该是24bit的,所以尝试更改这个参数后,果然画面亮了很多。
2024-09-28 08:49:10 203
原创 STM32 rtthread+cubemx 串口中断卡死问题
平台介绍: 芯片是使用的STM32G030F6,系统是rt-thread nano-v3.1.5, 使用rtthread studio + cubemx生成工程项目问题描述:想使用串口中断方式去读取串口数据,用的是HAL库函数HAL_UART_Receive_IT去实现,现在发现只要向串口这边一发数据就出现死机,串口调用HAL_UART_Transmit往往另外的设备发送数据是正常的,但是如果调用HAL_UART_Transmit_IT往外发也回导致死机。
2024-07-19 15:54:52 561
原创 TM1652驱动程序例子
TM1652 是一款LED(发光二极管、数码管、点阵屏)驱动控制专用芯片,内部集成了数字通讯电路、 解码电路、数据锁存器、震荡器、LED驱动电路。通讯方式采用异步串口通信(UART)协议,因芯片只 接收单片机发来的数据,仅需要单片机的一个TX端口发送数据给芯片即可,实现单线通讯;在显示驱动 方面,芯片采用动态扫描方式,两种显示模式可选,8级段驱动电流可调,16级位占空比可调;TM1652 内置消隐处理优化电路。第一个 Byte 数据为控制命令设定,低位先发。
2024-06-14 16:51:14 1779
原创 STM32配WS2812B 个别灯珠颜色不对问题
再重新看了下WS2812B的规格书,时间精度要求到了纳米级别,担心是不是时序控制的不对,因为灯珠有几十个,担心数据量比较大,导致传输过程中数据异常。用高精度示波器亮了下波形,发现正常的T1和T0的时长比规格书多了几十个ns,而且这些灯显示也是正常的,所以应该还算满足要求,但是发现有个别数据的时长超过了2微秒,这个就明显有问题,而且是比较规律每隔一段数据就有一个异常。最开始以为是灯珠问题没有去分析,想着先开发功能,后面再换个看看,但是发现有时又是其他灯珠,不是很规律,感觉不是灯珠问题。
2024-06-11 09:41:50 677
原创 C语言的_attribute_((weak))标记说明
最近搞单片机,遇到一个函数的定义中加了_attribute_((weak))标记,发现自己用了这么多年C语言,竟然没有见过这个,真是惭愧。:这段代码定义了一个默认的、不执行任何操作的。函数,并允许其他代码覆盖这个默认实现。后面只能去好好查了下,终于搞明白了。
2024-05-15 10:07:00 413
原创 Android 9.0写外部U盘无权限问题
无奈之下,决定看下原来系统中自带的多媒体是否有写U盘的的操作,看到有删除和重命名文件的功能后,打开了logcat,然后执行了一个删除操作,发现一个可疑的地方,就是操作的文件路径不一样。抱着试一试的态度,将apk写文件的路径从/storage/7DCC-B48A替换成/mnt/media_rw/7DCC-B48A后,果然ok了。通过mount命令可以看到,/storage/7DCC-B48A是/mnt/media_rw/7DCC-B48A挂载的一个系统内部路径。
2024-01-18 10:22:57 963 1
原创 用retrofit2发送post multipart/form-data请求,返回json数据
因为请求的content-type是multipart/form-data,所以接口的注解加上@Multipart,参数也要加上@Part。这个最开始不理解,用成了@FormUrlEncoded,导致一直请求失败。
2023-11-28 17:45:40 1480
原创 Android自定义textview实现自动滚动
原本想直接使用Android TextView自带的Marquee效果,但是这个需要控件被选中才会执行跑马灯,而且要文本内容的宽度超出文本控件本身的宽度时才会执行,而项目需要的效果是不管文本内容有多少都要执行滚动效果,所以只能放弃。3. 新加setMarqueeText(int resId)和setMarqueeText(CharSequence text)给外部调用,用于替换TextView的setText()方法。最近项目要实现一个置顶的子串滚动显示,类似广告条,需要悬浮在所有应用上面。
2023-11-22 21:24:38 1446
原创 RK3568 android12 声卡调试
按照上面添加节点后,可以识别到两个device了,但是录音的时候默认还是使用的是device 0,没有使用device 1,所以在start_input_stream加多一个强制切到device 1的动作。公版的声音输出接的是I2S1,录音走的也是I2S1,而我们的产品声音输出接的是SPDIF,录音用的还是I2S,所以使用公版的dts配置,会出现喇叭没有声音的问题,需要另外配置。修改完后,喇叭和录音都可以正常了。
2023-11-03 11:19:18 1415
原创 RK3568 USB otg口无法识别U盘问题
自研3568方案上有两路USB,其中一路是OTG口,这个口平时用于固件烧录和adb调试,但是不做调试的时候需要当成普通USB口使用,但是目前发现这个otg口无法识别U盘。注:如果此修改还不能解决,可以看下USB的5V供电是不是正常的,之前otg口的5V开机后默认是没有供电的,这个要先改成开机后5V常供。查看dts文件发现,dr_mode默认配置成了otg,导致驱动不会去识别U盘,改成host后问题解决。
2023-10-07 17:54:00 1903 1
原创 Android出现“android.media.MediaMetadataRetriever.finalize() timed out” 错误
因为多媒体的视频列表有获取Thumbnail的动作,而且每个视频文件都会调用一次,所以文件多的话,会调用多次,有可能出现网上说的释放不及时的问题。在网上查了很多资料,一个比较有价值的回复是:出现finalize timeout的问题,应该是MediaMetadataRetriever对象没有及时释放,但是又在继续创建新的对象。发现了问题原因,剩下就是试验了,在createVideoThumbnail函数的几个return函数前都添加一个release动作,进行主动的释放,果然没有再出问题。
2023-07-19 19:30:16 268
原创 Android 12 Settings的Connected devices页面无法获取焦点问题
在客制化过程中,发现Connected devices页面进去后无法获取到焦点,导致控器操作不起作用。具体方案:在切换完fragment后,起一个handler延时300ms去触发系统重新获取焦点,这里用clearFocus()函数来清理掉recyler_view中的焦点,触发系统重新寻找合适的焦点条目。经过各种对比试验,发现问题原因应该是因为Connected devices页面里的条目都是动态构建的,耗时比较长,在view初始focus的时候,条目还没有加载完,所以导致条目无法获取焦点。
2023-07-14 17:20:12 454 1
原创 修改Android系统AlertDialog的按钮选中背景色
Android 12系统默认的AlertDialog的按钮背选中景色太淡了,肉眼比较难看不出跟未选中的区别。例如安装应用时弹出的确认是否安装的对话框,用遥控器切换“cacel”和“install”两个选项,不仔细看无法确认到底光标在哪个按钮上,因此需要修改下按钮选中时的背景色,提升辨识度。
2023-06-29 15:53:59 1118 1
原创 RK3568修改蓝牙显示的名字
有时候需要修改RK3568设备这一端蓝牙在其他设备上显示的名字,例如有时要改成客户品牌的名字或者改成方案的名字,这个就需要修改默认的设备名称。
2023-06-08 14:40:26 505 1
原创 Android 12安装应用出错:For security reasons, the system cannot issue a Uri permission
通过如上log和前面的AndroidRuntime的堆栈打印,定位到是checkGrantUriPermissionUnlocked函数里面做的权限检查,如下是checkGrantUriPermissionUnlocked函数中做判断的部分代码。通过上面代码可以看出,针对是SYSTEM_ID和ROOT_UID应用,如果不是指定的授权包名就会直接返回-1,即not allow。所以要解决该问题,只要把自己的应用包名加进去就行了。
2023-05-25 10:47:13 1812 1
原创 Android 12去除安装应用时的“未知应用来源”提示
在Android 12的系统中预装了一个第三方的应用商店,但是首次安装应用的时候会提示该商店是未知来源,需要用户跳转到系统设置去给该应用设置成可安装应用。虽然该提示只是在首次安装应用的时候才提示,但是对一个产品来说如果预装的商店弹出此提示,还是会让用户对产品有所怀疑,所以需要把该提示去掉。
2023-05-24 17:06:07 2298
原创 RK3568 Android12 kernel logo跟uboot logo使用同一个logo文件,节省boot.img空间
在之前的3128平台上是只有一个logo的,但是新的3568 Android12 平台开机logo有两个,一个是uboot显示的logo,文件名是logo.bmp;另一个是kernel显示的logo,文件名是logo_kernel.bmp。
2023-05-19 15:57:31 1668 3
原创 gitlab连接提示“Whoops,GitLab is taking too much time to respond”错误
注:产生权限问题原因,猜测是之前的目录用户不是root,但是我执行拷贝的时候是以root身份去执行的,所以最终拷贝会/opt目录下的gitlab用户组变了,而puma的执行是gitlab用户,没有权限去写root组的文件,改成777后,所有用户都有权限去读写了,所以权限问题解决。网上搜了一波文章,有内存不够的、端口冲突的,各种方案试了一波,最后都没有解决问题。不过对gitlab的分析有了一些了解,所以就准备用gitlab-ctl tail查看gitlab运行的log,看能不能查出具体的异常。
2023-05-15 12:19:21 8642 3
原创 Android 12在framework中添加文件编译报not in the allow list build/soong/scripts/check_boot_jars/package_allow错
Android 7.1 在framework/base/core目录下添加文件java和aidl文件后,编译时需要先make update-api去更新current.txt文件,然后才能完整编译android。在package_allowed_list.txt中把新添加的包名加上即可,如下图红框所示,其中\是转义字符。
2023-05-10 19:55:53 1406 2
原创 RK3568 替换默认输入法为Pinyin输入法
3)设置PinyinIME为默认输入法。这一步在网上搜了几个方案 ,但是都有些问题,后面自己试验用如下方式可以设置成功,即在InputManagerServices.java的buildInputMethodListLocked函数中添加设置默认输入法值的动作。由于系统自带的Latin输入法不支持遥控器操作,需要替换为RK的拼音输入法。1)将LatinIME从mk中删除,让系统编译的时候不编译该apk。2)添加PinyinIME的编译预装。
2023-05-10 19:25:12 646 1
原创 RK3568 Android 12在parameter.txt添加buildtime参数防止重复刷机
RK3568的编译流程是先编译u-boot,然后kernel,最后编译Android,这3个编译完后会在rockdev /product_model/目录下生成打包需要的img文件,例如boot.img、uboot.img、recovery.img、super.img等,最最后才调用打包脚本去生成update.img文件,下面是RK打包工具的输出信息,可以看到parameter.txt也是有被一起打包进去的 ,offset是0x73000。下面是自己写的查找方法,有些地方写的不严谨,不过能满足需求了。
2023-05-10 14:17:38 1005 1
原创 CPATH在Android 12的Recovery模块中不起作用问题
这个方式之前在android 7.1上是ok的,另外即使在android 12平台上,编译uboot和kernel也都是能找到的,唯独在编译recovery的时候报错,百思不得其解。在网上也没有查到相关信息,后面一点点查编译的makefile,看uboot和recovery有和区别,发现recovery用的是Android.bp,不是用的Android.mk。注:目前在soong下只能用回老方法,在每一个模块里面去include头文件的方式,暂未找到一个类似CPATH这样可以全局声明头文件路径的方式。
2023-05-04 20:48:01 149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人