- 博客(21)
- 收藏
- 关注
原创 Aidl 学习小结
由于使用aidl主要用于进程间通信,不同进程间的文件描述符关联信息是不同的,所以我在aidl中添加了传递文件描述符的接口,来验证进程间的通信。注2:ParcelFileDescriptor.open中第二个参数,如果直接填 MODE_WORLD_READABLE会报安全问题。到ren.txt,然后push到设备中;一、在android11上的差异(环境androidstudio2022)注3:AndroidManifest.xml 中添加读写文件的权限。本小结是基于博主教程在android11上的实现。
2024-07-22 16:10:11 636
原创 简单 JNI实现java与C++集成
替换distributionUrl:https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip。6.2)构造数组需要选用byte[]而不是Byte[],后者是类不是java的基础类型;6.3)C++接口实现有输入参数,处理时需要调用env->Getxxx,不能直接处理;注1:可以看到java调用c++的接口,是通过jni实现的。3.1 java端是MainActivity.java 需要调用接口;注2:传递的参数都是jni中的类型。
2024-07-17 16:53:08 638
原创 VScode 远程连接服务器
注:以上只是我的操作流程,仅供参考。安装扩展借鉴 https://zhuanlan.zhihu.com/p/655276102。相关配置会保存到C:usersxxx.ssh\config。点击SSH中“+”选项卡,会要求输入用户,ip,及端口。右下角会有remote 连接,点击连接,输入密码。vscode 安装 remote-SSH 扩展。密码确认后,进入远程服务器,可以访问服务器代码。重启VScode后,相关连接保存在选项卡中。退出远程,只需要在输入密码时按 Esc。
2024-07-16 17:41:13 221
原创 MTK 不同安卓版本的刷写
由于不同的安卓版本,镜像的分区会有不同,所以下载前需要格式化选择Format All+Download。注:具体刷写教程可以搜索网上其他博主的分析;刷写工具上welcome选项卡也有相关说明。https://spflashtools.com/ , 我下载的是v5.2228版本。
2024-07-16 16:41:25 207
原创 ubuntu 22.04 编译mtk 安卓9代码
方法1:降低gcc版本,ubuntu22.04是gcc-11 需要降低到gcc-9。搜索博主文章有两个解决方法:https://blog.csdn.net/xiandang8023/article/details/124750391。下面是修改后文件状态。具体参考博主:https://blog.csdn.net/qq_32607609/article/details/128318438。参考:https://blog.csdn.net/CrazyZik/article/details/117163973。
2024-07-16 16:24:56 404
原创 linux 非阻塞式读串口小计
之前调试串口使用阻塞读,并加延时。发现读写效率不高,因为串口每次读出来的数据,并不全需要增加很长的延时,否则需要循环读。但是循环读当数据读完后,会造成程序阻塞。所以想提高效率,我采用非阻塞式读写,并使用循环读+select监听fd的方式。当文件描述符提示可读在读,当校验通过时退出循环。注:只是改善方案,非最优方案,在此记录一下。
2024-07-12 17:21:26 156
原创 ubuntu tab键无法自动补全
参考:https://huaweicloud.csdn.net/63566689d3efff3090b5d530.html。简单方法:修改/etc/passwd,在对应用户名的用户主目录后面,添加:/bin/bash。原因:新建的用户,shell是dash,改为bash,问题就解决了。
2024-07-12 17:04:48 594
原创 使用openssl 实现base64编解码
注:BIO_write()后一定需要调用BIO_flush(),将BIO_mem 内部缓冲区的数据都写出去。借助BIO对象是OpenSSL中的一种抽象,用于处理各种类型的输入/输出,如文件、套接字、内存等。– BIO_write(),使字符串经过B64编码,写入BIO_mem, 再从memory读出。BIO链,通过BIO_push()接口,可以实现b64对象和需要编解码的字符串的链接。– BIO_read(),使字符串经过B64解码,读出;
2024-07-12 14:58:35 204
原创 动态库的路径
链接器选项 -L: 编译的时候去找的目录.也就是所有的 -lxxx选项里的库都会先从 -L 指定的目录去找,然后是默认的地方(/lib and /usr/lib).可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提高了库应用的灵活性.(ld默认搜索/lib和/usr/lib这两个目录)我在写makefile时,一直以为动态库的路径,是指定-L后面的路径。注:由于不习惯使用-R,所以我才把需要的动态库路径写入/etc/ld.so.confg 并更新运行路径。
2024-07-12 10:56:55 266
原创 centos7.9 系统 openssl源码编译
如果原来系统中有openssl,请事先做好备份。头文件和库可以在源码编译时设置路径,bin文件需要创建软链接。注2:创建软链接后可以直接使用openssl命令,记得把原来软链接备份或者移除;源码下载:https://www.openssl.org/source/注3:如果使用动态库,记得把运行时库路径放置到环境路径中;注1:头文件和库文件在makefile中设置;注1:prefix 表示之后的安装路径。注2:./config 遇到的环境问题。至此openssl 源码升级完成。
2024-07-12 10:29:36 366
原创 g++ -O2编译结果异常
分析:添加-O2会调用uart_close(),不添加-O2则不会调用uart_close();-O2优化参数:编译器可能会优化代码的执行顺序。尝试:多种逻辑判断无果(
2024-07-08 15:09:13 269
原创 主机 usb插拔失效
可能是VMUSBArbSevice中出现了问题,所以停用后相当于重启。正常情况下,打开虚拟机接入usb设备时,才会识别为vmware usb device。2.2 参考博主 https://blog.csdn.net/kevin_lcc/article/details/43911209。2.1 查看设备管理器,发现在主机插拔的usb设备都识别为vmware usb device;方法任务管理器中 停用 VMUSBArbSevice服务后,usb设备识别正常。现象:关闭虚拟机后,主机插拔usb 不识别。
2024-07-08 13:59:01 167
原创 makefile 静态链接库有顺序
注:第一种编译时会报错,因为cppserver调用了cppcommon的函数。调试了很久,果然每件事的细节都需要研究。
2024-07-05 17:47:01 257
原创 linux 串口读数据阻塞
现象: 在虚拟机上调试linux串口时,当写入数据后,读数据时遇到阻塞。下面这篇博文对串口各个属性,都要详细介绍,mark一下为以后学习。
2024-07-01 17:23:19 291
原创 Android Studio 加载第三方库
3.3 如果路径中使用${CMAKE_ANDROID_ARCH_ABI},则ndk需要含有四种架构,且libs目录下也要有四种对应的库。总结:以上只是会为了调试结果而写的记录,没有仔细分析原理。我是按照上面博主的分享尝试的,现记录一下自己遇到的问题。
2024-06-25 18:17:38 1178
原创 南瑞芯片SM1 加密现象
但是实际情况,会出现加解密异常。(打印EK 和IV与解密端一致,怀疑执行若干次SM1加密后,DK发生变化)。根据规格书说明 SM1 EK和IV在第一次导入不变后,后续不需要导入。具体原因未知,现每次加解密前都导入 EK 和 IV后,基本正常。
2024-06-17 18:36:08 293
原创 南瑞SM1加密(测试规律)
结论:对于SM1加密,再加密数据后添加16个0后,用填充后数据解密。解密后的数据等于源数据+16个非0数据(与芯片SM1算法有关)我做了10次测试,分别用随机数产生512数据(5次)和随机数产生1024数据(5次)对于SM1 加密,如果源数据加密,后再用加密数据解密,可以得到源数据。注:结论只是针对南瑞芯片SM1算法,进行了10次测试的结果。如果改变了了加密数据,是否能够找出解密后的源数据呢?
2024-06-13 15:35:25 200
原创 南瑞加密芯片加密指定长度(0xe0)失败
解决方案:当遇到长度低字节位为0xe0时,在原数据后填充16个0,再加密。当长度p2,p3中的低字节位 p3=0xe0时,加密大概率失败。下面log可以看出对比非0xe0,0xe0长度的加密过程。注:由于加解密数据需要16的整数倍,经验上来讲填充16的倍数,保证长度低字节位非0xe0即可。分析原因:可能长度0xe0与ins值相同,导致芯片内部逻辑存在bug(个人感觉);当长度位0xe0时,大概率第二次接收INS命令读不到0xe0,导致加密失败。
2024-06-13 13:43:58 268
原创 简单的读写记录
想尝试一下把字符串以二进制的方式写入文件,然后以二进制的方式读出来。但是写入helloworld,始终读出乱码。之后我尝试一下别的后缀,如 .txt和.csr,都能正常以二进制方式读写。我记录一下这个小问题,二进制写入文件,文件一定需要指定后缀。更改char类型和string类型写入和读出,依然乱码。
2024-06-04 17:19:16 162 2
原创 初级C++处理字符串函数总结(一)
初级C++处理字符串函数总结(一)1、大小与容量1.size() 和 length():对于字符串返回个数两个函数是等效的。注:size() 获取容器元素个数,length()相当于strlen()传回字符串长度。2.empty() 检验字符串字符数是否为空。2、子串和字符串接合s.substr(): 复制字符串s;s.substr(11): 截取从第11位开始到最后;s.substr(5,6): 截取从第5位开始起的6个字符。3、find函数:find(text)text:cons
2020-09-24 21:28:34 287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人