自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (12)
  • 收藏
  • 关注

原创 从pfn_to_page/page_to_pfn看linux SPARSEMEM内存模型(转载)

从pfn_to_page/page_to_pfn看linux SPARSEMEM内存模型。

2023-03-26 22:23:13 102

原创 sg3_utils arm64 静态编译

在进行ufs等scsi device测试时,需要进行power mode切换等测试,因此需要有一个简单地工具集来向scsi device(ufs接口)发送scsi命令,比如 scsi reset命令等。在网上调研后发现sg3_utils是一个比较全面的工具。 但是sg3_utils需要在android上运行还要依赖很多动态库。因此本文介绍一种方法,将sg3_utils编译为静态可执行程序,然后adb push到arm64设备端,无需依赖任何so即可执行。

2023-02-12 21:08:32 821

转载 linux device irq wakeup机制

本文介绍了linux 休眠和唤醒时,对device irq的设置和处理。1.set_irq_wake函数不会导致执行interrupt handler,而是只能把系统唤醒;2.IRQ_NO_SUSPEND可以在任何时候唤醒系统,并执行interrupt handler3.对于不是唤醒源的设备,在suspend_noirq阶段中,会将device irq disable掉。

2022-09-13 11:00:45 697

转载 linux schedule_timeout分析(转载)

linux schedule_timeout

2022-09-03 18:14:00 493 1

原创 STM32L051 低功耗特性分析

STM32L051 低功耗特性分析32MHz 2.7mW功耗low power sleep mode大概只有4.5uAstop mode大概 0.4uAstop mode能比low power sleep mode功耗低一个数量级。这个时候是把core还有大部分clk都关闭了stop mode with rtc 可以定时通过lptimer定时唤醒,执行中断or reumse程序执行。可以满足电池业务需求,同时把功耗降低一个等级低功耗进入退出流程,通过查看stm32...

2022-01-16 21:30:27 2201

转载 自旋锁使用场景和实现分析(转载)

自旋锁最近看到的一篇文章,觉得写的很清晰,通过场景应用解答了我对自旋锁使用的一些疑问,推荐给大家。引入问题:(1)如果cpu0持有锁,cpu1一直不释放锁怎么办?(2)什么场景下必须要用自旋锁,而不能用互斥量?(3)互斥量或者自旋锁,他们会被多个进程使用,那么它属于进程的一部分?内核当发生访问资源冲突的时候,可以有两种锁的解决方案选择:一个是原地等待 一个是挂起当前进程,调度其他进程执行(睡眠)Spinlock 是内核中提供的一种比较常见的锁机制,自旋锁是“原地等待”的方

2021-07-05 20:28:14 3177

原创 Linux 进程用户态,内核态的区别,可抢占内核

关键问题:1.进程的状态,内核态和用户态的区别2.可抢占内核和飞可抢占内核的区别3.spinlock在单核 多核,可抢占/非可抢占内核中的区别;疑问:linux用户程序本身不久支持调度的吗,既然支持调度,不就是支持抢占吗?疑问:spinlock和mutex都可以用于多核系统,那为什么必须要spinlock呢?如果使用spinlock的线程都被锁定到某个core,那不就会导致死锁?linux系统在完成中断/异常事件的处理之后,决定是否应该执行schedule函数。

2021-07-05 16:14:31 273

原创 arm trustzone 学习记录

关键问题如何构建一个可信任环境(trust execution environemnt) 安全环境和非安全环境对资源访问的区别(secure timer interrupt memory etc.) 如何保证安全启动(secure boot, root of trust) 如何设计一套安全+非安全共存的软件框架和机制we...

2020-06-21 19:46:33 530

原创 ARM C程序 数据对齐访问问题

C或者C++等语言中会涉及到内存操作,嵌入式处理器中对数据的访问,需要遵循对齐原则,要求对齐的目的是为了提高数据的获取效率,举个例子,如果也给32位数字是4字节对的,cpu一条指令即可完成数据复制,如果一个32位数字是非4字节对齐的,那么cpu需要至少3条指令完成一个4字节数据的复制,如此一来降低了内存数据访问的效率。以实际遇到的问题为例char a[10] = {0};定义一个int...

2019-09-22 23:19:54 432

原创 micrium ucprobe使用指南

1、关于ucprobeUcprobe是micrium公司推出的嵌入式系统调试工具,利用ucprobe,l  可以实现对程序运行状态的实时监控,用户可以利用ucprobe构建可视化的系统监控平台l  具有示波器,文本框,按钮,滑动条等常见控件l  支持jlink,tcp/ip,rs232,usb等调试接口,使用jlink时,无需对原有代码做任何改动,使用其他通信方式时,需要在embe

2016-07-30 20:01:35 10813

原创 fork函数详解

fork函数是Unix like系统都提供的有关操作系统进程处理的一个api。fork函数可以获得一个与父进程一模一样的子进程,子进程获得父进程的数据空间和堆栈的一个副本。换句话说,二者并不共享内存,而是独立执行。fork函数的最大特点是父进程的一次调用,可以有两个返回,一个是父进程中返回子进程的id,一个是在子进程中返回0,还有一种情况是fork错误:原因一是进程超过最大值,原因二是内存

2015-01-19 23:01:29 1472

原创 java客户端服务器编程示例

初次接触C/S模型编程,编写了一个简单的客户端/服务器 Socket编程来实现一些基本效果。1、服务器端代码:import java.io.DataInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.

2015-01-17 14:30:50 641

原创 stm32+mpu6050+四元数解算

程序执行过程(1)读取数据,得到ax,ay,az,gx,gy,gz(2)四元数解算,得到q1,q2,q3,q4(3)计算欧拉角,得到pitch roll yaw(4)串口输出(5)误差处理:陀螺仪零值误差,上电后静止采样多次取平均值。

2014-12-27 23:19:41 10956 2

原创 Android蓝牙串口程序开发

本文主要介绍了针对android的蓝牙串口上位机开发。一、帧定义android客户端按照一定的数据帧格式通过蓝牙串口发送数据到连接到MCU的蓝牙从机,MCU接收到数据后,按照帧格式的定义,接收数据帧,并解析数据帧,得到需要的数据。android客户端按照以下帧格式来发送和接收数据。1.1客户端发送的数据帧内容帧校验的和是从帧长开始到帧

2014-12-21 13:20:35 3417 1

转载 Android子线程更新UI主线程方法之Handler

Android子线程更新UI主线程方法之Handler背景:我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的。 下面说下有关Handler相关的知识。多线程一些基础知识回顾:在介绍Handler类相关知识之前,我们

2014-12-01 23:15:48 746

转载 Android之Handler用法总结

Android之Handler用法总结方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型)刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题   new Thread( new Runnable() { public void run() { myView.i

2014-12-01 22:47:58 458

转载 Thread中的join方法

一、使用方式。join是Thread类的一个方法,启动线程后直接调用,例如:?1Thread t = newAThread(); t.start(); t.join();二、为什么要用join()方法在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,

2014-11-21 14:29:57 611

原创 java多线程

java多线程在安卓应用开发中

2014-11-21 11:20:43 345

转载 Git 常用命令

Git 常用命令  Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。  本来想着只把最有用、最常用的 Git 命令记下来,但是总觉得这个也挺有用、那个也用得着,结果越记越多。这个是使用MindPaper、xMindd绘制的。

2014-11-19 11:03:45 398

转载 android中那些不得不重写的函数

1.   onCreate, onStart, onResume, onPause, onStop, onRestart, onDestroy如果连这7个方法都不清楚的话,那么就该从头开始看Android了。下图是Activity的生命周期,加深记忆用:2.   onNewIntent在AndroidManifest.xml将某activity的android:

2014-11-18 10:00:12 776

转载 Android Intent使用

在Android应用中实现activity之间的跳转使用intent机制。  本例子简单地简绍如何利用intent使程序由MainActivity跳转到另一个OtherActivity实现单一参数值,在返回MainActivity时利用Bundle进行批量回传。一、设计界面  1、MainActivity布局文件  打开res/layout/activity_mai

2014-11-07 15:17:38 442

转载 Django入门:第一个Django应用

对Django这个 框架 感 兴趣 好久了,却一直懒于 研究 学习 ,现在跟随官网的 教程 跑一遍,学学Django同时也 继续 学学 Python 。  在开始之前, 我们 先把Python和Django这个框架安装好。  官网: https://www.djangoproject.com/ 下载 :http://www.djangoproject. com /downloa

2014-11-03 09:59:46 559

转载 嵌入式经典面试题

C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。          从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答

2014-11-01 21:37:42 437

原创 "捣鼓"树莓派

最近了解了智能硬件后,对智能硬件、物联网表现出极大的xi

2014-10-31 12:43:05 492

原创 Android开发记录

做的项目中有一项要求是需要做一个手机app客户端开控制,我也是醉了,只能从头开始xianxuexian

2014-10-26 21:47:33 365

转载 gdb十分钟教程

本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 命令 解释 示例file 加载被调试的

2014-10-25 10:05:25 372

转载 常用Linux程序总结

Shell: bash。它结合了 csh 和 ksh 的优点,并且有 readline 功能,你可以随意绑定自己的键盘。 编辑器: VIM, Emacs。 程序开发: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ... 论文,幻灯工具:LaTeX, ConTeXt 绘图工具:MetaPost。这个语言太强了,以至于我只用

2014-10-24 16:05:09 402

转载 可重入和不可重入

重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象。一般浮点运算都是由专门的硬件来完成,举个例子假设有个硬件寄存器名字叫做FLOAT,用来计算和存放浮点数的中间运算结果假设有这么个函数void fun(){//...这个函数对FLOAT寄存器进行操作}假如第一次执行,有个对浮点数操作运算的结果临时存在FLOAT寄存

2014-10-24 11:31:19 407

转载 从一个笔试题看C语言中float向double的提升问题

从一个笔试题看C语言中float向double的提升问题——lvyilong316首先看一段来自一个笔试题的程序段:float f=1.1;       double d=1.1;       cout这段代码输出0,那么为什么同为1.1的doble和float不相等呢?我们知道float和double比较的时候后发生类型提升,也就是float会提升为double。我们

2014-10-23 23:34:59 612

原创 Linux学习记录

Date:2014.10.22今天终于开始学习Linux了,学

2014-10-22 21:22:54 442

转载 轻松搞定二叉树

版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树

2014-10-21 16:29:38 402

转载 内存到底分几个区(转)

下面有几种网上的理解,我整理一下:一: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储

2014-10-21 09:40:41 832

转载 [转载]VC++四种启动其它程序的方法

四种启动其它程序的方法有时我们的程序需要启动其它程序,可能是为了利用它已有的功能,也可能是为了达到某种需要。那么怎样来启动我们需要的程序呢?我暂时知道有4种方法:1、调用API: int system( const char *command );  你可以传入一命令,启动某个程序。如"ping www.vczx.com", "YourExe"等等  不过这里有几点要值得注

2014-10-18 20:37:36 1319

原创 stm32 IAP程序烧写方案

最近做了一个飞行器,感觉使用jlink仿真器下载更新程序好复杂,每次都需要把一个大块头(Jlink)挂到飞行器上,操作极为不便,网上查了一下,stm32的程序烧写方式一共有三种(1)使用Jlink,JTAG等仿真器;这种方式简单快捷(2)使用系统自带bootloader,ISP,这种方式需要更改stm32boot0 boot1引脚,以更改启动方式。(3)使用ISP,即 in appli

2014-10-16 21:42:32 5405 3

原创 stm32 uCOS-III移植

最近终于对操作系统有了一个比较系统的rens

2014-10-13 13:34:15 1557 1

原创 STM32 CLK configuration

AHB  CLK = SYSCLK;APB1 CLK = SYSCLK/2;APB2 CLK = SYSCLK;PLL

2014-09-10 20:45:11 983

原创 Keil 中新建STM32F302 工程

折腾了一天,终于建好了一个完整的stm32 project,总结一下需要注意的地方。

2014-09-10 15:28:20 2974 1

转载 堆、栈增长方向和大端、小端问题

栈增长方向与大端/小端问题栈增长和大端/小端问题是和CPU相关的两个问题。在内存管理中,与栈对应是堆。对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方式是向下的,是向着内存地址减小的方向增长。在内存中,“堆”和“栈”共用全部的自由空间,只不过各自的起始地址和增长方向不同,它们之间并没有一个固定的界限,如果在运行时,“堆”和 “栈”增长到发生了相互覆

2014-07-14 14:47:06 776

转载 C++:STL标准入门汇总

第一部分:(参考百度百科) 一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的代码从广义

2014-06-18 22:24:49 487

原创 C++常用类型总结

最近在学C++,其中一些常用的danbushuxi

2014-06-18 16:57:17 580

sg3-utils 静态编译包

注意:在unbuntu上按照压缩文档中的《sg3_utils测试工具交叉编译,静态编译.pdf》进行操作,可自行编译sg3_utils arm64 静态包 sg3_utils ARM64 静态编译链接程序,可直接在arm64平台上运行,用于对scsi 设备进行测试,如硬件接口为ufs的scsi device进行测试。可以很方便的针对UFS等设备进行命令测试。 可以进行 格式化 写入 读取 复位 sense buffer解析 power mode切换等。

2023-02-12

arm平台根据栈进行backtrace的方法.docx

arm异常定位方法 包括 1.arm 中断、异常处理流程 2.arm异常时保存的寄存器 3.aapcs 用来分析如何进行backtrace 4.常见工具推荐

2020-10-27

vim常用快捷键和配置设置

vim常用快捷键和插件设置 包括vim中tab操作 vim中使用cscope nerdtree等。 其中一些好用但不常用的快捷键可以明显提高工作效率

2020-10-27

1_chrdevbase.tar

linux 字符设备驱动样例代码,可以在ubuntu上字节make编译,安装module 运行app测试代码等

2020-03-18

Makefile.7z

gcc通用makefile,可以 1.适配编译器,根据编译器制定编译 链接选项 2.定义编译目标,编译文件,目录,目标文件等 3.自动生成头文件依赖关系

2020-03-15

stm32 MPU6050四元数姿态结算程序

STM32F103B + MPU6050+四元数解算,采用IO模拟IIC接口读取数据,

2014-12-28

android 蓝牙串口客户端

android 蓝牙串口客户端,通过与蓝牙串口配对(自动扫描设备),可以实现按数据帧发送和接收数据,考虑到android 蓝牙操作顺序,对各种bug都有处理。

2014-12-22

stm32F4 IAP程序+超级终端+应用资料

stm32F405 IAP程序,测试通过,包括iap,app,下载工具,说明书,注意事项等内容。

2014-10-17

冒泡排序MFC实现

使用MFC设计了一个冒泡排序算法。 1、在编辑框中输入要排序的数字,用空格隔开 2、点击“排序"后,排序结果便可输出。

2014-06-12

排序算法实现代码与伪代码

本压缩包中包含了各种冒泡算法的代码实现与伪代码实现,附有对排序算法思想的解释,方便读者快速掌握排序算法。

2014-06-11

银行排号系统MFC实现和控制台实现

实现了银行排号叫号系统,有两种版本,一种是用控制台程序,一种使用MFC实现,题目在压缩包里都有,有问题可以联系我,说明中有联系方式。

2014-06-10

银行排号系统设计 C语言实现

利用VC++6.0开发的银行排号系统,功能如下: 1、叫号get get VIP(分优先级) 2、取号 call 3、删除 4、查找 5、统计排队人数 6、统计某一个号码之前的人数 7、重置排号系统 8、退出

2014-06-10

PSoC MPU6050 DMP库使用

MPU6050 DMP实现程序,里面包含了DMP功能的定义与实现

2014-06-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除