- 博客(65)
- 资源 (3)
- 问答 (2)
- 收藏
- 关注
原创 ROS2导航运行TurtleBot模拟器报错
ROS 导航模拟器运行报错 [controller_server-8] [INFO] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
2022-08-21 12:22:21
3157
1
原创 setjmp, longjmp使用不当引起崩溃
setjmp 将CPU核中的一组寄存器保存在一块jmp_buf中,要注意它不保存局部变量,当函数调用过深时发生错误,可以用longjmp跨越式跳回当初setjmp的地方,根据setjmp的返回值,可以判断是首次调用setjmp,还是从longjmp返回。setjmp和longjmp的使用要处于链式调用关系的函数中, 如果是在平级函数中,由于栈帧被后面的函数复用,再跳转回来时,局部变量失效,导致各种各样的异常。libpng库里使用了大量setjmp, longjmp处理异常, 某业务层在使用这些函数时
2022-01-08 10:29:44
680
原创 gcc优化对static函数调用的处理
最近追查一个崩溃问题,反汇编根据调用栈一层层查找,到了某一函数后竞找不到对应代码行,后进入其调用的某一个函数才将其调用顺序串起来。由此做了一个实验,从汇编层面看看编译器如何处理。...
2021-06-13 14:35:32
854
1
原创 加快IOT设备连接WIFI的速度
连接WIFI的主要步骤为 扫描(信道)、认证、关联、DHCP, 有些使用LWIP协议栈的还可能有一个检测IP冲突的操作。扫描阶段可以在第一次搜索到之后 将信道 记录下来,下次启动优先扫描此信道。 此方法对于一些频繁自动切换信道的路由器来说达不到好的效果。认证阶段,小型设备在此阶段根据密码加上WIFI名 计算得到PMK(pairwise master key), 耗时较多,可提前计算并存储,以便下次使用;DHCP阶段有条件的可以考虑使用静态IP。有些LWIP协议栈,在申请到IP后,会检测是否有
2021-04-10 21:14:35
287
原创 安卓 毫秒级时间显示APK
最近需要测试点播延时,发现网上的不少定时器刷新精度不够,有不少网页计时器不少是40多毫秒才刷新一次时间。写了个简单的APK, 60Hz屏幕上,基本做到16ms刷新一次。编译好的APK:https://download.csdn.net/download/konga/15988270主要代码: private static String TAG = "MainActivity"; private TextView timeView; @Override pr.
2021-03-20 18:00:33
2278
1
原创 ARM同步原语 摘要
http://infocenter.arm.com/help/topic/com.arm.doc.dht0008a/DHT0008A_arm_synchronization_primitives.pdf一、软件同步当访问共享资源必须限制同一时间只能有一个Agent时,软件必须进行同步。共享资源: 共享内存、外设Agent: 处理器、进程、线程通过对表示共享资源的状态...
2019-12-08 18:48:48
517
原创 读文件时收到信号,read函数部分成功
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <signal.h>#define BUF_SI...
2019-10-23 00:06:13
279
原创 VLC点播RTSP问题处理
HISI的参考RTSP Server.VLC 2.x版本点播私有RTSP服务, 可正常出图像;VLC 3.x版本点播RTSP服务, 三秒后停止;抓包看VLC3.x 的RTSP会话过程,PLAY方法后不久,VLC发送了GET_PARAMETERS请求,然后服务端就断开了。与VLC2.x版本的正常RTSP点播对比, 正是多了一个GET_PARAMETERS操作;对服务...
2019-05-26 22:56:21
1230
原创 Cache的clean和invalidate操作
用某ARM芯片做硬件逻辑解压缩,从其开源的Uboot里取出解压缩代码,拿到LiteOS里面使用。先从Flash读取压缩文件到内存, 申请一块足够大的目标Buffer, 将两块内存交给解压硬件逻辑,有低概率解失败;。。。在读取flash上的压缩数据到内存后,将这段存放压缩数据的内存进行clean cache操作,没有复现此问题。原因应该是解压缩逻辑没有使用Cache里的内容, ...
2019-04-03 23:25:11
14408
原创 向Android项目添加系统库和外部预编译ffmpeg库
项目添加 C 和 C++ 代码,官网参考文档。https://developer.android.google.cn/studio/projects/add-native-codeapp/build.gradle添加abiFilters defaultConfig { ... externalNativeBuild { cma...
2018-12-08 09:51:10
332
原创 编译Android 8.1 并刷入Nexus 6P
-----------------AOSP Android源码----------------源码下载:https://lug.ustc.edu.cn/wiki/mirrors/help/aospcd ~/bin#curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repocurl -sSL ...
2018-12-04 13:01:20
2294
原创 Android NDK 随记
jni规范: https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.htmlNDK文档:https://developer.android.google.cn/ndk/guides/NDK参考:https://developer.android.google.cn/ndk/reference/N...
2018-11-25 21:55:23
202
原创 ARM架构、汇编摘要
架构:处理器通用行为特性处理器: 实现了某种架构,可以集成到不同的设计中设备:包含处理器和额外组件ARM架构包括: 编程模型 指令集 系统配置 异常处理 存储模型一个处理器可以实现不同的内存管理模型: VMSA(Virtual Memory System Architecture), 基于MMU(Memory Management Un...
2018-11-25 21:54:07
747
原创 minix文件系统格式分析
参考https://www.zybuluo.com/harpsword/note/207478https://blog.csdn.net/hejinjing_tom_com/article/details/52319189http://www.cnblogs.com/zhangchaoyang/articles/1896605.htmlhttps://www.cnblogs.com/codes...
2018-11-19 08:15:58
1385
原创 树莓派做二级路由抓包
一、刷open wrt (LEDE)镜像1. 树莓派3B LEDE镜像下载https://openwrt.org/toh/views/toh_fwdownloadRaspberry Pi 3BCPU: Broadcom BCM2837Target: brcm2708SubTarget: bcm27102. 在Linux下使用dd把解压后的镜像写入SD卡设备/...
2018-07-23 00:18:05
2377
1
原创 基于QEMU搭建完整的虚拟ARM开发环境(uboot+linux+rootfs)
主机环境:ubuntu 16.04虚拟机,目标机器:QEMU模拟vexpress-a9。------------------------------------------------一、准备工作安装qemu, 交叉编译工具等略过。konga@ubuntu:~/work/vexpress/uboot$ qemu-system-arm -M ?Supported machines are:……ve...
2018-03-17 20:02:11
7631
原创 一次踩内存事件
做各个模块集成,其中包含了文件管理、录像业务相关的库。背景:在文件管理初始化时,应用层会指定数据根目录。 测试发现在执行特定操作时,目录失效,无法创建文件,日志大概这样 (NULL) /Movie/xxxx.MP4,好像是指定的根目录变空了。 检查一番, 没有进行去初始化, 跟文件管理库负责同事远程沟通了下,他在库里维护了一个指针,指向 应用 层设置的 目录字符串(这个方法当然不...
2017-04-25 23:46:45
3206
1
原创 Android logcat信息记录到手机文件
添加权限: 示例代码:public class MyApp extends Application { private Process mLogProcess; @Override public void onCreate() { super.onCreate(); try { int
2017-04-16 18:46:00
2345
原创 sigaction检测段错误示例
#include #include #include #include #include #include #include #define ARRAY_SIZE(a) sizeof(a)/sizeof(a[0])#define DEBUG#ifdef DEBUG #define LOG(fmt,args...) printf("%s():%d " fmt, __FUNC
2017-03-12 17:30:56
848
原创 ffmpeg命令: 删除视频中不需要的音频流
konga@ubuntu:~/work$ ffprobe gf.mkv Input #0, matroska,webm, from 'gf.mkv': Metadata: encoder : libebml v1.3.0 + libmatroska v1.4.0 creation_time : 2014-11-22 12:29:18 Dur
2017-01-15 14:50:07
16361
2
原创 记录几次内存泄露问题
一、 2014年底,我们的Android客户端在长时间操作后会发生内存不够而崩溃,还好安卓平台有一个强大的堆内存查看工具,如下图:然后开着这个,不断操作客户端的各个功能,直到发现一进入文件浏览界面(要显示缩略图),堆中75K左右的对象数量就会上涨,而且降不下来,后来拿着缩略图宽高计算了下,一个Bitmap占用空间差不多就是75KB,那基本上就可以确定是缩略图了,经过检查最终发现是bit
2016-10-06 14:35:30
704
原创 Android Acivity LaunchMode 总结
Activity LaunchMode: standard: 标准(默认), 可能启动多个实例; singleTop: 已经Activity已经在栈顶,则使用当前的实例(需处理onNewIntent), 如果不是Activity栈顶,则启动新实例; singleTask: 应用程序上下文中只一个实例,如果不在栈顶,将其上的Acitivty全部出栈;
2016-10-02 12:48:03
435
转载 Android 中 Canvas 绘图之 PorterDuffXfermode 使用及工作原理详解
http://android.jobbole.com/83948/
2016-07-23 23:02:26
460
转载 weightSum 和 layout_weight 以及 为什么有时要设置0dp
线性布局(水平为例)的weightSum 定义子控件weight的最大值, 如果未指定,则等于 所有子视图的 layout_weight累加和。子视图的layout_weight 占用父视图的空间比重。一个线性布局的子视图真正宽度计算: 子视图自身的宽度 + 自身比重 / 总比重 * 父视图的宽度为什么在设置了layout_weigth后,开发环境会
2015-07-19 16:53:39
1286
原创 Unity中用触摸控制物体旋转和放大
void Update () { //单点触摸 if( 1 == Input.touchCount ){ Touch touch = Input.GetTouch (0); Vector2 deltaPos = touch.deltaPosition; transform.Rotate(Vector3.down * deltaPos.x / 2f, Space
2015-05-31 15:47:35
22999
原创 ffmpeg编译成一个Android libffmpeg.so库
update 2018: 生成工具链# NDK version = 14# cd $NDK_DIRINSTALL_DIR=/home/konga/binARM_TOOLCHAIN="arm-linux-androideabi-4.9"ARM64_TOOLCHAIN="aarch64-linux-android-4.9"make_toolchain_from_ndk(){...
2015-04-21 20:49:49
1275
原创 SDL_Texture与SDL_Renderer示例
#include #include #include SDL_Window * window;SDL_Renderer * renderer;SDL_Texture * texture;SDL_Rect rectSrc;SDL_Rect rectDest;int main(int argc, char * argv[]){ if(SDL_Init(SDL_INIT_VI
2015-04-02 21:25:04
3728
翻译 SDL Event Handling 事件处理
http://wiki.libsdl.org/CategoryEvents事件处理允许应用程序接收用户输入。事件处理是在调用 SDL_Init(SDL_INIT_VIDEO);时随着视频子系统一起被初始化。在内部,SDL把所有事件存放在一个等待处理的事件队列中去。使用SDL_PollEvent(), SDL_PeepEvents() andSDL_WaitE
2015-03-19 07:51:45
3165
如何在源码级合并两个独立的APK
2015-05-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人