- 博客(7)
- 资源 (16)
- 收藏
- 关注
原创 Crash:一个死锁引发Kernel PANIC的思考
软件开发过程中经常会遇到因驱动或内核引起的死机问题,我遇到的有hung_task和NULL point两种类型问题。通常的分析和解决这两类问题,都是通过查看kernel log的方式去解决,但是有时也会从kernel log中无法找到有用的线索,此时就可以借助crash工具分析此类型的问题了.这里借助在项目中遇到的问题记录下详细的分析过程.背景知识: 在借助cra...
2019-03-10 15:02:52
2100
1
原创 基于linux-4.18新建一个项目和如何给linux社区发送patch
我们在工作的过程中,通常会遇到新建项目的需要,比如项目经理提出我们需要基于linux-4.18的内核版本创建新项目A的需要,大部分做开发的人员可以会一头雾水了。下述步骤是在ubuntu16.04上执行的结果,其他linux系统类似.1. 建立远程git 仓库和本地git repo建立远程git仓库:cd /opt; sudo mkdir git_linux_dev.git; sudo ...
2019-02-17 14:43:09
1053
原创 Linux常见的内存分析工具
随着技术的日新月异,嵌入式软件产品也逐渐往更高端, 运行更流畅方向发展。正常我们目前的手机产品,常见的基本都是32G,16G,已经很难在看到1G的内存了。即使如此我们还是会面临内存不够用导致系统慢的结果。本文将列出几个我比较熟悉的内存分析的工具或者方法,读者不妨可以尝试使用以下。1. system monitor图像化界面在ubuntu左上角点击search your comput...
2019-02-01 01:27:37
10175
原创 一个简单的例子:native service binder通信
本小结描述native层进程间binder通信,包括client端和 Server端. 下面将根据一个具体的事例来介绍如何在native层使用binder. 自顶往下看,首先看到的就是Android.mk, 可以看到在使用binder之前,依赖系统的动态库LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SHARED_LIBR...
2019-01-29 15:25:21
692
1
原创 gerrit上提交代码时出现Merge Conflict解决办法
平时使用gerrit管理代码的公司,软件开发人员经常会发现如果提交的代码不及时+2或者merge,如果有其他开发人员先于你merge(你们都是基于同于代码base), 那么你的代码将无法入库,出现merge conflict. 本文将给出一种方法来解决这种问题:- git remote update;- git rev-parse xxx_branch |xargs gi...
2019-01-17 10:25:22
25952
4
原创 QEMU调试linux内核
经常会有学习linux的朋友在问学习linux是否一定要买发开版,答案是否定的,但如果你需要在产品级别的验证,买一块开发板做开发板还是非常有必要的。本文主要介绍使用QEMU来调试ARM linux内核,一台PC全部搞定,调试内核非常方便。当然也参考了网上的其他一些资料,这里主要基于的是ARM公司提供的开发板express,通过模拟的方法同样可以达到学习的目的。1. 准备工作在ubuntu16.04...
2018-05-26 22:38:13
5898
原创 module_init()加载设备驱动
我们知道在写设备驱动的时候通常要为某个设备实现xxx_init函数,并将该函数传入module_init(xxx_init), 当kernel启动之后该设备驱动就可以被内核加载,这一章节将以倒叙的方式详细介绍了内核是如何加载module_init()函数,并最终调用到xxx_init函数的。 module_init()定义在include/linux/module.h中,#ifnde...
2018-05-21 14:38:44
4779
vim8配置成强大的IDE
2019-03-03
基于单片机万年历+温度+LCD12864 proteus仿真
2014-02-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人