- 博客(71)
- 资源 (5)
- 收藏
- 关注
原创 Lua实战笔记第2篇 C++调用lua动态链接库
新建C++控制台工程 属性 不使用预编译头 删除pch头文件和源文件 编译工程 属性->C/C++->常规 将src所在相对路径填入“附加包含目录” 编译工程,未通过 属性 ->链接器->输入 “附加依赖项”添加“Lua5.1.lib” 编译,还是有错误 将lib文件目录...
2019-01-05 17:53:18 647 1
原创 Lua实战笔记第1篇 VS2017编译Lua5.3和Lua5.1
首先登陆Lua官方下载Lua源码包“Lua5.1.5”和“Lua5.3.5”一、编译Lua5.3 首先在VS2017中创建解决方案 继续创建 C++动态链接库工程“Lua5.3” 解压Lua5.3,将src目录copy至当前工程所在目录,然后将src目录下所有的 .c和.h文件添加至当前工程 更改工程配置属性“C/C++ => 预编译...
2019-01-05 14:26:16 2896 1
原创 USB UVC实战笔记第4篇—枚举与外扩单元Extension Unit 描述符
UVC设备生产厂家为留出设备的调试接口,或扩展一些UVC以外的特殊功能,会在其USB固件中添加一些私有命令,比如我要点亮一个led,如何利用UVC控制接口完成命令传输?UVC设备固件如何解析这是一条点亮led的命令? 在回答上述两个问题之前,我要先介绍下UVC扩展单元(Extension Unit),UVC扩展单元是专门为了给设备厂家提供私有命令的Uni...
2018-11-25 09:25:54 8709 12
原创 USB UVC实战笔记第3篇—枚举与Processing Unit描述符的关系详解
前言 暂且将枚举过程分为两个阶段。 第一个阶段我称其为通性阶段,就是只要是USB设备都会经历这个阶段,该阶段USB主机完成了对从设备的设备、配置、接口、端点描述符的获取。主机会根据描述符中的信息,决定是否发起或如何发起第二阶段枚举。 第二阶段,我称其为个性阶段,因为大多数USB设备在完成上一步骤,枚举过程就已经结束了,严格来说,该阶...
2018-11-16 17:29:39 3497 1
原创 USB UVC实战笔记第2篇—提取描述符信息
此情此景,我脑海里突然联想到当年宋丹丹老师提出的一个深奥的问题“把大象装冰箱分几步?”,你可以按照宋丹丹老师的方法“开冰箱-把大象装进去-关冰箱”,但小品归小品,只是为博人一笑,把大象装冰箱之前还是要进行肢解的。 通过上一篇对USB枚举过程的数据抓包分析,你已经见过“大象”了,见下面那庞大的一坨……,本篇要做的就是把下面那一坨数据给肢解开,分析各个描述符之间的...
2018-11-10 15:12:05 2492
原创 USB UVC实战笔记第1篇—UVC设备枚举过程详细分析
1 UVC枚举过程分析 UVC,全称为:USB video class 或USB video device class。是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。目前的主流操作系统都已提供UVC设备驱动,如:windows xp sp2、linux 2.4.6、macos10.5,这些系统及之后的版本。所以...
2018-11-09 22:45:53 17960 1
原创 omapl138移植uboot系列之启动内核原理(启动内核第三篇)
uboot启动内核原理看完上一节,你应该已经学会如何启动内核了,但只会启动内核是不行的,我们的目的是令内核按照我们的想法去运行,这就不得不提一下内核传参机制。3.3.1 还是bootm内核启动不是无条件的,而是有一定的先决条件,这个条件由启动内核的bootloader(我们这里就是uboot)来构建保证。Linux规定了一种“向我传参“机制,那么uboot要是还想启动Linux内核...
2018-10-28 18:00:32 658 1
原创 omapl138移植uboot系列之修改移植TI官方移植的Linux内核(启动内核第二篇)
修改Linux内核源码 实际上,刚刚我们已经成功的启动了TI移植过的Linux内核,但是从串口控制台的现象来看,“Starting Kernel”之后什么信息都没有输出,这就需要我们在TI移植过的内核源码之上进行相应修改,以适合我们的639A板卡。3.2.1 关于uboot启动内核停留在Starting Kernel问题的解决当通过Kermit方式使用串口在线将内核uImage...
2018-10-28 17:57:51 1685 1
原创 omapl138移植uboot系列之启动TI官方移植的Linux内核(启动内核第一篇)
启动TI官方移植的Linux内核和编译uboot一样,Linux内核的编译也是三板斧,首先修改Makefile中的ARCH和CROSS_COMPILE,然后找到你要编译的板卡执行make xx_defconfig配置,最后执行make menuconfig进行检查并修改,三板斧操作完就可以直接make编译啦!我们还是和移植uboot一样,先编译TI 移植过的omapl138开发板的内核镜...
2018-10-28 17:53:54 911
原创 omapl138移植uboot系列之在线升级(第八篇完结篇)
uboot在线升级的原理是先通过某种外部接口(如网口、串口、USB等)将目标文件加载到DDR,然后从DDR中读取二进制文件并写到存储介质指定地址,由于639A底板并无网口,唯一与外部通信的接口就是串口,所以本节将借助639A板卡的本地串口完成在线升级功能。 Kermit文件运输协议是用于PC之间交换文件的一种简单的文件运输协议,uboot和secureCRT软件就支持Kermit...
2018-10-21 14:22:20 831 1
原创 omapl138移植uboot系列之添加MTD分区(第七篇)
如果你刚刚使用仿真器的方式烧录了uboot镜像,你肯定会感叹实在是太慢了,先别叹气,看完本节你将爱上烧录程序。2.6.1 添加MTD分区 MTD(memory Teachno Device)中文翻译为“内存技术设备”,是Linux系统对“NorFlash”,“NandFlash”等存储设备抽象出来的一个设备层,它向上提供统一的访问接口,屏蔽底层硬件的操作,而uboot中分区只...
2018-10-21 14:10:11 2118 2
原创 omapl138移植uboot系列之添加点亮led命令(第六篇)
2.5 uboot命令体系 刚刚你是否注意到,uboot启动后会先进入一个3s的倒计时,在倒计时变成0之前,敲打键盘的任意键,都会进入uboot的命令行状态,在此输入命令按回车结束,uboot会收取这个命令然后解析,然后执行。每一个uboot的命令背后都对应一个函数。这就是uboot实现命令体系的一种思路和方法。进入uboot控制界面后,可以运行各种命令,比如下载文件到内存,擦...
2018-10-21 14:06:10 858
原创 omapl138移植uboot系列之移植板卡(第五篇)
上节操作完成后,虽然uboot中有了我们自己的板卡,但并未进行移植,所以现在是还不能烧录的,本节将带领大家根据自己的板卡进行uboot移植。2.4.1 图形界面下配置 命令行执行 make menuconfig,出现如下界面 方括号[ ]中的“*”代表编译链接时添加该模块,为空则不参加编译链接,这就是uboot的裁剪功能。因为我们的启动介质是SP...
2018-10-21 13:58:04 942 1
原创 omapl138移植uboot系列之添加属于我们自己的板卡(第四篇)
在第一章节,我们已经编译好了一份uboot,但它是适用于TI自己的omapl138_lcdk开发板的,并不适用于我们的板卡,本章将带领大家在uboot中添加639A板卡。 2.3.1 向board中添加属于自己的板卡 board目录下每一个终极文件夹都是一块板卡的片上驱动程序,TI 工程师们移植过的omapl138_lcdk板卡位于board/davinci/d...
2018-10-21 13:34:51 986
原创 C# 操作Excel表格(自己写的类,注释详细可直接使用)
在项目菜单上,单击添加引用。 在 COM 选项卡上,找到 Microsoft Excel 对象库,然后单击选择。 添加命名空间 using Excel = Microsoft.Office.Interop.Excel; 关于C#对Excel的操作,我已写好类库,可去https://download.csdn.net/download/weixin_42314225/107265...
2018-10-17 14:48:53 2558 1
原创 树莓派学习笔记第一篇:启动树莓派
1 启动raspberry2 2015年参加IC Key论坛活动侥幸获得了一块树莓派第二代裸板,放在家里吃灰了三年,实在惭愧,今一时兴起想玩玩这款板卡,由于只有一块裸板,其他什么配件也没有,我就自己组了下配件,用手机充电器作为raspberry2的电源,又找了张TF卡作为启动介质,接下来我们就来制作启动卡并启动树莓派,并通过ssh的方式登陆树莓派。 1.1 官网下载镜...
2018-10-05 22:35:38 432
原创 Labview调用C#动态链接库dll
一 、VS2017制作dll新建->项目选择“类库(.NET Framework)”,工程命名为|“MyLib”确定 在Class1类里创建一个 add函数,注意!!,函数前一定要加“public”修饰,否则该函数默认为私有属性,使用Labview无法找到该函数。 生成dll动态链接库,去工程所在目录中去寻找dll文件,...
2018-09-30 15:37:13 13938 2
原创 stm32与AT24C02的I2C通信总结(模拟时序)
从51的时候就学习了I2C通信协议,但51的功能就那些,内部没有集成I2C模块,所以只能通过模拟I2C通信的时序来和EEPROM进行通信,stm32内部集成了I2C通信的片上外设,但由于内部I2C外设复杂和不稳定行,所以用的人不是很多,而基本上使用I2C的通信都是通过模拟时序的方式来实现的 首先I2C是同步半双工的通信方式,需要两条线即可,SCL时钟线,同步时钟由主机产生,SDA数据线用来...
2018-09-12 10:24:22 1979
原创 stm32红外遥控的外部中断实现
花了整整两天时间终于算是基本把红外解码搞明白了,其实并不是很难,用了两天时间,说来惭愧啊,原因就是细节上的问题,不过最终总算找出问题来了。使用外部中断来解码,就先对外部中断进行配置吧 void exti_init(){ RCC->APB2ENR|=1<<0;//使用外部中断要开AFIO复用时钟,因为要用到用到它的寄存器来选择出发IO口 AFIO->EXT...
2018-09-12 10:21:29 3390
原创 stm32红外遥控的定时器实现
我用的红外遥控是使用的NEC协议,即使用PWM来调制发送的信息 NEC协议,其特征如下: 1、8位地址和8位指令长度; 2、地址和命令2次传输(确保可靠性) 3、PWM脉冲位置调制,以发射红外载波的占空比代表“0”和“1”; 4、载波频率为38Khz; 5、位时间为1.125ms或2.25ms;NEC码的位定义:一个脉冲对应560us的连续载波,一个逻辑1传输需要2....
2018-09-12 10:19:39 1570
原创 VMware创建Windows与Linux共享文件夹
单击“虚拟机->设置->选项->共享文件夹”,选择“总是启用”。单击添加,选择我们想要在Windows与Linux之间共享的文件夹,这里我将D:\639B_WorkPlace\omapl138设置为共享文件夹,如下图所示。完成设置后,我们在Linux下进入mnt/hgfs/ 目录下,ls这样,我们就实现了Windows与Linux之间文件的共享。...
2018-09-11 21:32:32 349
原创 omapl138 ARM核 之CCS6下切换特权模式
1 .1 ARM的特权模式 为什么同样的串口驱动在DSP上可以顺利应用,把它放在ARM上去应用却不行了呢?那么很有可能是你的ARM还处于用户模式,用户模式下的ARM有些寄存器是无权限访问的,比如系统配置寄存器,无法访问系统配置寄存器,那么就无法配置GPIO,所以串口的引脚初始化就做不了了,在这里先解释下ARM的运行模式: ARM一共有七种运行模式,除了...
2018-09-11 21:24:32 789
原创 关于uboot启动内核停留在Starting Kernel问题的解决
当通过Kermit方式使用串口在线将内核uImage加载到内存0xC0008000地址处后,执行bootm c0008000命令去启动内核,console控制台信息执行到Starting Kernel就卡住不动了,这句打印信息是uboot的最后一条打印信息,也就是我们确定不了内核到底有没有被启动一般内核启动失败常见的原因大多是因为传参不正确导致的,即r0-r2寄存器的值。将machi...
2018-09-09 08:53:51 15991
原创 omapl138移植uboot系列之官网获取BSP(第一篇)
BSP就是board support package(板级支持包,一般由开发板供应商提供),里面的内容就是这个开发板的所有相关的源代码、文档、教程等。登录TI官网去下载TI为自己开发板移植的uboot,链接如下http://software-dl.ti.com/processor-sdk-linux/esd/OMAPL138/latest/index_FDS.html登陆进...
2018-09-06 21:04:05 1886
原创 安装vmwaretools
若要实现Windows与Ubuntu之间的文字复制、粘贴,通过共享文件夹完成文件的传输,vmwaretools的安装是非常有必要的。 单击“虚拟机->更新 VMWare Tools”,Ubuntu桌面会弹出如下文件夹,将“VMwareTools-10.2.0-7259539.tar.gz”拷贝至Downloads目录。 Te...
2018-09-06 20:58:45 567
原创 使用C++类模板实现离散傅里叶变换(DFT)
/* file : dft.h * description : 复数类、离散傅里叶变换类模板 * formula : X(k)= ∑n={0,N-1}x(n) e^-j2π/Nnk * * * Auther : Hanc<741764646@qq.com> * Create Time : 2018.8.14 * */#ifndef DFT_H#defin...
2018-08-24 07:55:14 720
原创 C++类静态成员函数实现对象的二阶构造
前言 在谈二阶构造模式之前,我们需要先学会灵活使用C++类中的静态成员函数,一般我们将其配合静态成员变量一起使用,用途最多用在统计该类创建的对象个数,除此之外,很多程序员在工作当中不会使用静态成员函数,今天要用的二阶构造模式与此密切相关! 什么是二阶构造模式? 二阶构造,顾名思义,那不就是分两个步骤完成构造函数嘛?嗯…,就是这个意思!为什么要使用二...
2018-08-01 23:16:32 510
原创 SD卡分区及rootfs烧录的一些理解和笔记
一、前言最近在omapl138平台移植完uboot和linux内核后,对内核挂载根文件系统的这个过程一直是云里雾里,再加上对文件系统没有深入的理解,就更云里雾里了,因为omapl138支持MMC启动,所以先通过使用linux下fdisk工具对SD卡进行分区,然后分配uboot、kernel和根文件系统的位置,加深理解。二、准备工作想想Windows下的的C、D..盘,其物理磁盘实...
2018-07-25 23:21:59 6715 1
原创 字符设备驱动-使用alloc_chrdev_region+cdev注册设备驱动
:Lalloc_chrdev_region函数原型如下,它是我们用来向内核申请主设备号时用的,与register_chrdev_region不同的是,alloc_chrdev_region是让内核分配给我们一个尚未使用的主设备号,不是由我们自己指定的,该函数的四个传参意义如下:dev :alloc_chrdev_region函数向内核申请下来的设备号baseminor :次设备号的起始...
2018-07-19 11:44:39 23050
原创 omapl138移植uboot系列之uboot SPL代码分析(第三篇)
单纯的从源码开始分析uboot是一件十分令人头疼的事,因为uboot不只是针对你是用的芯片架构,你在分析源码时所遇到的那些条件编译你很难去找到它定义的地方,更别说这个宏到底有没有被定义,我个人比较喜欢对照着反汇编去分析源代码。 在顶层目录下执行:make omapl138_lcdk_defconfigmake MEMORY { .sram : ORIGIN = ...
2018-05-26 13:00:25 709
原创 omapl138移植uboot系列之uboot SPL阶段原理分析(第二篇)
2.2 uboot SPL阶段 自2012年以后,uboot分为了uboot-spl和uboot两个组成部分。SPL即Secondary Program Loader的简称,第二阶段程序加载器,这里所谓的第二阶段是相对于SOC中固化ROM中的启动,即RBL(ROM BootLoader)。 2.2.1 为什么uboot要增加SPL 一般厂商固化的RBL上电后会通过相关的硬...
2018-05-26 10:18:30 1208
VS2017 Linux字符设备驱动工程
2020-06-14
AM5728 .out文件转bin文件的上位机工具(附带C#源码).zip
2020-03-27
该模块作为C#操作Excel的基类使用
2018-10-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人