- 博客(71)
- 资源 (2)
- 收藏
- 关注
原创 openharmony display
答:目前看起来应该是render_service调用的opengl进行的渲染,而drm这边的适配只有一些简单的属性和vsync的适配而已。├── drm_vsync_worker.cpp (vsync软件和硬件方式的初始化)├── display_composer_vdi_impl.cpp (显示属性、配置、设置的接口)├── drm_display.cpp (依旧是获取一些显示的属性)├── drm_encoder.cpp (只有一个获取crtc的接口)
2025-01-15 16:10:43
471
2
原创 openharmony bootanimation分析及常见错误
main的函数很简单,直接调用接口Run,接口位置在boot_animation.cpp中。
2024-12-18 10:43:54
370
原创 frida常用命令总结
/spwan一个app然后运行js。//查看类包含Interceptor。//explore方式启动app。//查看所有service。//查看所有active。//运行某个active。//hook重载的类。
2024-10-29 15:40:51
492
原创 练手apk nixiang 某小游戏
添加-r后就可以解包和编译签名了,但是这里还是会报一个错是AndroidManifest.xml解析失败,都是乱码,但是不影响我们破解。2、重新打包后,安装不了,这里通过命令行adb install -t xxx.apk安装,报错包的对齐不是v4,这里需要使用android ndk里面的工具进行对齐和签名。3、拆包和解包没问题后,使用jadx分析java代码,然后找到需要破解的地方修改smail代码,重新打包,安装,破解完成。
2024-10-14 08:53:47
396
原创 基于yolov7的家庭无人值守监控报警系统
需要在linux发行版上使用nvdia gpu加速,目前准备先跑起来整个流程后再搭建加速环境。暂时采用CPU环境跑通流程。python实现的框架。
2023-04-07 17:10:34
470
原创 gcc优化内存之 __attribute__((packed))
((packed)) 是gcc的优化选项,选择紧凑内存模式,结构体会不采用对齐的方式来使用内存,所以。加此编译选项时会只使用3字节内存,而不加此编译选项的话,会使用4字节内存。
2022-11-22 15:55:26
582
原创 6.10版本内核体验
第一张图为6.10版本内核的性能,对比发现,context1的性能上,6.10比5.15要高8%,上下文切换作为很重要的一个性能指标,差距这么大,看来6.10的优化做的很好。后续会继续更新其他测试项做整体的对比。通过Run -c 12 context1 来测试上下文切换的性能,结果如下。一般情况下编译成功后的内核默认是会被启动,如果想切换内核可以通过修改。x86PC 12核,virtualbox + deepin系统。这个没什么可说的,安装各种编译工具后进行编译和安装内核。
2022-11-02 16:04:25
627
原创 cgroup调度
一、前言调度组的本质是将进程组作为一个调度的实体,这样做的目的是对类似桌面系统这样的环境,cfs公平分配的情况下,将进程放在组中的,防止单一的进程抢占更多的资源,导致桌面的进程分配更低的资源,例如10个单一进程,每个进程分配约1/10的cpu资源,如果将9个进程放到组中,那么这个组会和另外一个进程平分资源。cgroup也是基于此来进行的资源隔离控制。二、数据结构1、调度组的数据结构定义在sched.h中,每个组创建后都会放到task_groups这个全局变量为头的链表中(sched_init中是这样操
2021-12-13 13:40:59
503
原创 ftrace调试
##设置为function_graph追踪模式echo function_graph > current_tracer ##启动追踪echo 1 > tracing_on##清除trace文件缓存cat /dev/null > trace##调用函数查看调研栈tail -n 100 trace
2021-12-01 11:31:33
125
原创 inline对性能的影响
inline修饰的函数,在编译的时候会在调用处展开,这样的好处是调用处会直接运行inline的内部逻辑,无需跳转指令,这样可以提升性能。
2021-11-30 11:11:45
284
原创 软中断学习
前言以前一直不知道软中断是如何工作的,只知道其优先级比硬中断低,深入看了一下代码,恍然大悟。先说结论:软中断的本质是内核线程!1、初始化软中断的线程early_initcall(spawn_ksoftirqd);其中线程的个数是和cpu个数一致的,也就是说软中断是并发执行了,因此很多书籍上说软中断必须是可重入函数,原因就在这。2、软中断是在编译阶段就定义好的,也就是说是固定在代码中不可修改的。参考链接:https://0xax.gitbooks.io/linux-insides/conte
2021-11-29 10:09:52
496
原创 linux .config的生成方式
1、make xxx_defconfig2、cp arch…/xxx_defconfig .configmake menuconfig因为.config是基于xxx_defconfig与Kconfig共同生成的,所以即使defconfig相同,.config也不一定相同
2021-09-26 14:34:25
1444
原创 starting init: /sbin/init exists but couldn‘t execute it (error -8)
我使用单独的内核与yocto编译出的文件系统,内核启动时出现这个报错。-8 这个值代码的是格式错误,目前怀疑是单独编译的内核与yocto的工具链不一致导致的此问题。使用yocto编译出的内核与文件系统可以完全匹配使用。...
2021-09-17 15:37:48
1200
原创 忘记linux密码后修改的措施(基于uboot)
uboot是可以修改内核传参的,在bootargs参数后添加init=/bin/sh这是令linux在shell启动。当然,你的uboot需要有串口打印才行,这样才会接收到shell,然后shell中通过passwd命令修改密码,whoami查看用户名即可。...
2021-09-17 15:33:27
1298
原创 linux initrd
bootloader在启动linux内核时,会运行一个initrd的ram文件系统,文件系统中有一个init脚本,用来加载驱动模块和挂载真正的根文件系统。
2021-08-27 16:50:05
123
原创 linux进程
一、简单聊一下linux的用户态进程都是基于init进程fork出来的,Linux分为用户栈和内核栈,内核栈是内核态运行的栈空间,具体的栈初始化是基于处理器来实现的,例如arm的msp和psp,分别给用户和线程独立用于调度切换使用。linux本质上也是如此,内核初始化的时候,会创建一个init线程,用户态所以的进程fork都是基于init来进行的。二、进程调度方式linux进程调度分几种,前两种用于实时系统:SCHED_FIFO,顾名思义,如果一个进程设置为此模式,然后优先级当前最高,一直占用C
2021-08-24 14:26:19
109
原创 LD_PRELOAD的用法
LD_PRELOAD顾名思义,就是重新加载链接库。一般用于链接库的重定向,例如linux测试lockdep的测试代码,就使用了此功能。进入源码中的cd linux-stable-rt-4.19/tools/lib/lockdep cat lockdep#!/bin/bashLD_PRELOAD="./liblockdep.so $LD_PRELOAD" "$@"其实大概意思就是LD_PRELOAD=./liblockdep.so.4.19.148 ./tests/AA赋值给LD_P
2021-08-18 14:22:52
1503
原创 linux高级睡眠及唤醒方式
修改状态为TASK_INTERRUPTIBLE,然后调用调度器。set_current_state(TASK_INTERRUPTIBLE);freezable_schedule();唤醒进程的方式需要获取任务结构体,然后调用wake_up_process唤醒进程。pid = find_get_pid(pid_nr);ts = pid_task(pid, PIDTYPE_PID);put_pid(pid);wake_up_process(ts);这样做的好处是调用接口层次低,实时性高。
2021-07-23 16:17:09
299
原创 linux 内核处理ioctl
编写内核模块时,有时候会使用ioctl,但是传参时ioctl有一些预定义的命令,这些命令会被响应,导致不能到达用户的内核处理程序,所以一定要注意。预定义命令分为 3 类:• 可对任何文件发出的(常规, 设备, FIFO, 或者 socket) 的那些.• 只对常规文件发出的那些.• 对文件系统类型特殊的那些.具体详见内核头文件ioctls.h...
2021-07-23 16:06:31
227
原创 linux sysfs和proc两种文件系统
proc和sysfs都是内核创建出来的文件系统,proc的创建要比sysfs容易一些,所以很多人选择使用proc来和内核交互
2021-07-23 15:57:59
256
原创 linux shell编写镜像制作工具
UCAS_INPUT_KERNEL_PATH=/ucas/input/kernel/UCAS_INPUT_FS_PATH=/ucas/input/fs/UCAS_INPUT_BOOTFS_PATH=/ucas/input/efi/UCAS_INPUT_BOOTFS1_PATH=/ucas/input/grub/UCAS_OUTPUT_KERNEL_PATH=/ucas/output/kernel/*UCAS_OUTPUT_FS_PATH=/ucas/output/fs/*UCAS_OUTPUT
2021-06-29 16:25:42
300
原创 openwrt编译自己的模块注意事项
1、放在package下的xxx文件为自己的项目,项目下的第一层Makefile注意一定不要有语法错误。2、最底层的src中的Makefile生成的可执行文件名,必须和最终的包名一致,不然会报错,找不到执行文件。...
2021-04-25 11:41:36
209
原创 ubuntu更新gcc和python
sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt updatesudo apt install gcc-6sudo apt install g++-6sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6
2021-04-16 14:35:54
190
原创 vnc server配置
#!/bin/shUncomment the following two lines for normal desktop:unset SESSION_MANAGERexec /etc/X11/xinit/xinitrc[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb KaTeX parse error: Expected 'EOF', got '#'
2021-04-08 10:57:10
168
原创 linux 下端口占用查询指令
netstat -tunlp查询某个进程的占用情况,例如nginxnetstat -tunlp | grep nginx
2021-03-31 14:48:29
80
原创 nginx配置esp32 ota服务器
我使用ESP32的OTA升级SDK,需要使用https协议下载固件包。我采用的方式是在服务器上使用nginx配置下载路径,也就是修改配置文件即可。配置信息如下:server {listen 443 ssl;listen 8082;server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; ssl_certificate /usr/l
2021-03-16 15:29:08
546
原创 linux shell启动多个进程的注意事项
启动多进程时,一定注意在长时间运行进程后添加 &或者nohup,将进程托管给后台,但是这两个命令是有区别的。nohup在当前shell进程被终止后,可以继续在后台运行,而&在shell退出后也会退出。这是网上的说法,我测试使用nohup会阻塞后边程序,需要加&才能顺序启动进程,nohup只有将输出存储到nohup.out的功能而已当我结束shell之后,进程会退出,并不会保留在后台。例如编写一个test.sh程序:unset DISPLAYexport DISPLAY=:0
2021-01-25 16:53:28
2330
原创 C语言不细心造成的问题教训记录
1、变量边界不细心造成的问题,int cmd_decode(const char *input){if(input[0] != 0x90U){//do something}}input变量为char类型,而0x90U为无符号,0x90>128所以为负数,有些编译器不会对变量进行强制转换,认为左值为负数,右值为正数,造成不等的判断成立(经过测试在arm64架构下,变量会强制转换为相同的类型,而x64架构不会转换造成0x90 != 0x90U),所以一定要注意此问题。...
2021-01-22 11:49:02
142
原创 git 提交代码到gitee
1、在gitee上创建项目2、git clone http//:xxxx.git3.将所需添加文件拷贝到本地git目录4.git add ./xxx 将文件添加5.git commit -m “add xxx” 提交代码6.git push origin master 将本地代码提交到远程
2021-01-06 12:25:40
186
原创 ffmpeg文件找不到的问题
这种情况一般是ffmpeg版本过老的原因,最好解决办法是下载源码重新编译安装新库,并编译时指定新库的路径。CMakeLists.txt:project(projectname_ffmpeg)set(CMAKE_CXX_STANDARD 14)include_directories(/usr/local/ffmpeg/include/)link_directories(/usr/local/ffmpeg/lib/)add_executable(exec_name src/main.cpp)tar
2020-12-23 13:55:45
6439
原创 LK系统(cboot) .ld文件分析
little kernel 是一款用于安卓及大部分嵌入式系统的bootloader英伟达nx的cboot就是基于此系统1、分析.ld文件. = ALIGN(8); #分配8字节对齐的内存空间给__commands_start__commands_start = .;KEEP ((.commands)) #将所有包含.commands的段进行存储__commands_end = .;#记录.commands结束位置,后面的和此操作一致,这样就能获取所有包含.commands的变量段在程序中调用s
2020-12-22 11:47:56
934
stm32l476rg.pdf
2019-06-26
stm32f411ce.pdf
2019-06-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人