
嵌入式
靳皓屹工作站
一个喜欢折腾的房奴
展开
-
自制虚拟现实示波器
看到网上很多人做了自制示波器,都是硬件实现的。最近学习了labwindows/cvi,所以萌生出自制一台串口示波器的想法。下位机采用stm32,通过自带AD采集电压值,然后通过DMA传至串口,发送到上位机。下面主要叙述一下上位机软件的设计。利用CVI自带的控件库来创建界面。波形显示控件是stripchart。软件启动时,自动配置串口:OpenComConfig (comnu原创 2016-05-08 17:04:51 · 39688 阅读 · 0 评论 -
进程学习笔记(一)
今天初步学习了一下内核进程设计思想 , 简单的做一下记录。(1)概念 进程:程序执行程度以及信息的数据结构的结合。 轻量级线程:线程之间可以共享资源,两个线程修改共享资源,双方都能查看到修改。当然,每个线程,都可以由内核独立调度。(2)进程描述符 task_struct结构体,在sched.h中,内容多,咱们就不贴在这里了。 但是,书原创 2017-10-15 17:47:22 · 326 阅读 · 0 评论 -
gpio_set_value
gpio_set_value(port_num,0/1) 一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,它就管不了!而gpio_direction_output (port_num,0/1),在某个GPIO口写上某个值之后,还会把这个端口设置为输出模式。 因此,有人也许就会建议,把gpio_set_value这个函数直接去掉不用,是否可以,显然是可以的。转载 2017-08-08 14:16:36 · 6025 阅读 · 0 评论 -
操作系统学习 -- 概论
(一)概论篇操作系统主要功能可以概括为:(1)fork() -> 开启新的进程;(2)time-share -> 实现多任务;(3)isolation between processes -> 所有的进程之间是独立的;(4)work with each other ->进程之间的通信,比如pipe总结起来就是三点:多任务,独立进程块,相互通信设计的不是太好原创 2017-03-12 20:28:58 · 335 阅读 · 0 评论 -
qt 移植到2440
QT移植手册: 毕设上面用到了QT,所以得移植啊移植。 其实QT移植到arm linux系统只需要两步,第一是tslib的移植,第二是qt-everywhere的移植。可以这么讲,tslib是一个环境,QT只是一个库。 废话不多说了,开始说正儿八经的。1 tslib的移植 (1)保证LCD驱动和触摸屏驱动OK,这个就不多说了,至少有/de原创 2017-02-04 11:08:53 · 1100 阅读 · 0 评论 -
2017电子设计攻略_控制类
2017年电子设计大赛准备攻略(控制类) Author: 靳皓屹 中北大学1. 组队 组队是一件非常重要的事情。在组队之前,一定要想清楚: (1)三个人中间是否有一位核心成员(具有决断力,能够定好团队的方向);(2)分工问题;个人认为最合理的分工是这样的:硬件+驱动+APP,之后会详细的谈这原创 2017-02-06 17:56:57 · 8507 阅读 · 5 评论 -
MJPG-STREAMER 移植+BUG
Mjpg‐streamer是一个开源软件,用于从webcam摄像头采集图像,把它们以流的形式通过基于ip的网络传输到浏览器如Firefox,Cambozola,VLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备;关于它的介绍网上有一大堆,读者可自行了解;网上关于它的移植也很多,下面给出移植的过程与在编译过程中出现的一些问题与解决方法。在移植Mjpg-streamer之前必须移植转载 2016-12-07 16:16:22 · 470 阅读 · 0 评论 -
函数指针学习小记
由于主要给自己看,就不bibi了,直接上程序:#include void pr(int a,int b){ printf("a=%d,b=%d",a,b);}void main(){ void (*ppr)(int,int); ppr = ≺ ppr(23,32);}在上述程序中,ppr指原创 2016-10-20 16:57:55 · 222 阅读 · 0 评论 -
Makefile 学习小记(二)
继续makefile的学习:在之前程序的基础上,我们继续编写更加高端的makefile。obj = main.o dep.odir = ./out.PHONY : allall : test.kg $(obj)test.kg : $(obj) cc -o test.kg $(obj).PHONY : fuckfuck :原创 2016-10-18 22:00:26 · 264 阅读 · 0 评论 -
makefile学习小记(一)
Makefile一直没有仔细的去看看,最近下狠心看了看,有一些收获;先来看看这个例子:main.c:#include "dep.h"void main(){ dep(1); printf("we are in main now !\n");}dep.c:#include "dep.h"void dep(in原创 2016-10-18 11:32:27 · 313 阅读 · 0 评论 -
自己编程实现简单的字符设备架构
突然有想法把stm32的程序结构根据linux驱动结构来做,能做一个结构体,然后注册,然后之后调用都是标准的open,read,write接口,思考了一下,就用结构体和函数指针实现。下面是内核源文件:#include #include "BSP_Core.h"Drv drv_table[32];unsigned int init_drv_list(Drv *tabl原创 2016-10-21 15:31:02 · 291 阅读 · 1 评论 -
输入子系统框架开发
在INIT中:输入设备由struct input-dev 结构表示: static struct input_dev *buttons_dev;对输入设备进行设置: buttons_dev = input_allocate_device(); //分配一个buttons_dev结构体设置事件的类型: set_bit(EV_KEY,bu原创 2016-08-23 11:04:33 · 582 阅读 · 0 评论 -
driver层定时器开发
static struct timer_list buttons_timer; //定义一个定时器init_timer(&buttons_timer); //定时器初始化buttons_timer.function=buttons_timer_function; //定时器两大要素之一之定时器处理函数,另一个是超时时间mod_timer(&buttons_timer, jiffie原创 2016-08-23 09:54:09 · 311 阅读 · 0 评论 -
【嵌入式】字符驱动开发框架
开发字符驱动时,应该有如下框架:1.构建file_operation,static struct file_operations second_drv_fops = { .owner = THIS_MODULE, .open = second_drv_open, .read = second_drv_write, };2.在结构体转载 2016-08-07 17:38:29 · 431 阅读 · 4 评论 -
驱动开发中操作方法小结(1)
/*********************************************/ exec 5 exec 5cat /proc/devices //查看设备驱动cat /proc/interrupt //查看中断数目/*********************************************//*************原创 2016-08-18 11:44:28 · 262 阅读 · 0 评论 -
linux中断程序框架
总体框架和普通的字符型驱动是一样的,不过有一些不同:(1)在open函数中注册中断程序 request_irq( unsigned int irq, //中断号 irqreturn_t (*handler)( int , void * ,struct ptregs *), //中断处理函数原创 2016-08-18 11:39:42 · 356 阅读 · 0 评论 -
linux c backtrace
调试过程中,可能需要打印某一时刻的调用栈(当然你说用IDE那当我没说),那么你可以参考本文:#include <execinfo.h>#define MAX_STACK_DEPTH (20)void print_stackframe(void){ void * buffer[MAX_STACK_DEPTH]; int depth = backtrace(...原创 2019-10-06 16:54:54 · 865 阅读 · 0 评论