自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (9)
  • 收藏
  • 关注

原创 自调试打印

自调试打印函数

2022-11-07 17:43:12 328 1

原创 关于STM32H743 recv()数据错误的问题分析

问题描述中位机使用TCP方式接收数据时可能出现数据错误,出错概率极高,大约接收300字节内必出。错误如下:最终结论中位机使用ST厂商自带的HAL库,该源代码在关闭网络接收的DCache(数据缓存)功能时有bug,可能导致部分区域的DCache未被关闭,从而导致TCP接收时可能从不正确的数据来源区拷贝数据,从而出错。软件环境HAL库版本号: STM32H7xx HAL V1.9.0STM32CubeMX版本: 6.1.0中位机MCU: STM32H743LWIP版本:.

2021-01-25 11:14:09 1362 3

原创 2020-08-29

清晰地感知到了自己的瓶颈。

2020-08-29 15:37:11 159

原创 CRC校验和LCRC校验

/* CRC 高位字节值表 */const rt_uint8_t CRCTABLEHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81

2017-12-18 10:53:42 1638

原创 Delphi压缩access数据库

function CompactMDB(const DBFile, Pwd: string): boolean;var TempDBFile: string; ConStr: string; JE: OleVariant;begin // Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=..\Data\alarm

2017-11-01 16:22:01 590

原创 Delphi读写注册表

procedure EnumComPorts(Ports: TStrings);var KeyHandle: HKEY; ErrCode, Index: Integer; ValueName, Data: string; ValueLen, DataLen, ValueType: DWORD; TmpPorts: TStringList;begin ErrCode :=

2017-10-12 10:54:00 1099

原创 Delphi读写ini文件示例

var iniFile: TiniFile; index: integer; price: double;begin iniFile := TiniFile.Create('.\config.ini'); //ini文件与exe同目录 index := iniFile.ReadInteger('配置', '编号', 0); price := iniFile.Read

2017-10-11 10:48:16 356 2

转载 程序员和项目经理之间的恩怨情仇

偶有所感,偶有所读,天大地大,两个互相看不上眼的人何必挤在一艘小船上。记录之。http://www.cnn6.net/html/itok/2017731/202425.html?ref=myread程序员和产品经理之间的恩怨情仇时间:2017年7月31日来源:互联网 作者:小恩 我要评论一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现列车上

2017-08-01 09:49:31 4607

转载 好与坏的程序员:如何客观评价程序员的水平?

开源中国上读到一篇文章,深以为然,引用保存之。https://www.oschina.net/news/87295/good-and-bad-programmer好与坏的程序员:如何客观评价程序员的水平? 局长 发布于2017年08月01日 收藏 16 评论 8  1有感于知乎上的一篇关于程序员的讨论。让我突然之间心有戚戚然的感觉

2017-08-01 09:39:41 574

原创 excel将一行或一列转换为10个的方阵

=INDEX(Sheet1!$B$3:Sheet1!$B$1343,(ROW()-3)*20+COLUMN()-1)

2017-07-25 19:45:12 1267

原创 封装自己的printf

#include int my_printf(const char* format, ...){ int result; va_list vp; va_start(vp, format); result = vprintf(format, vp); va_end(vp); return result;}

2017-07-15 11:47:35 1149

原创 生成随机数rand()

#include#include#include#define random(x) (rand()%x)void main(){ srand((int)time(0)); for(int x=0;x<10;x++) printf("%d/n",random(100));}

2017-03-31 14:13:46 487 1

原创 bmp格式解析

bmp.c#include #include "bmp.h"void savebmp(unsigned char * pdata, char * bmp_file, int width, int height ){ // Define BMP Size const int size = height * width * 3; FILE * output; //

2017-02-21 14:03:43 481

原创 Android开发与Linux开发的区别与联系(入门)

1、Android的目录路径等不明,Linux代码如何移植进Android相应目录不知;2、目前Linux内核代码放置在\\192.168.1.190\share\android\kernel_imx;3、安卓下编译Linux内核的方法(PC机使用ssh调试):#! /bin/bashdate > build_boot.logcd kernel_imx/source ./quic

2017-02-10 11:37:11 3248 1

原创 Linux网卡能接收不能发送bug eth0 tx packets:0

今天调试新板卡,遇到一个很奇怪的现象,eth0能收不能发,使用ifconfig -a查看,发现tx packets一直为0。经过排查网线故障、交换机故障一系列之后,我用板卡自ping,发现也不通,故怀疑是网卡驱动故障。经检查,网卡使用了新的phy芯片,设备树配置的确有问题,更改后正常。

2017-01-17 15:33:18 4243 2

转载 TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)

http://www.cnblogs.com/azraelly/archive/2012/12/25/2832393.html在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是:SYN表示建立连接,FIN表示关闭连接,A

2016-12-30 16:18:28 289

原创 Linux uboot下新增phy的生效流程解析(Zynq平台)

driver/net/phy/phy.c:phy_init()里通过宏CONFIG_PHY_MARVELL来初始化具体phy芯片,宏的定义在xxx_config.h中;driver/net/phy/marvell.c:phy_marvell_init()中phy_register(&M88E1518_driver)来注册具体型号的phy芯片;phy_register()的定义在phy.c,

2016-12-29 10:51:41 7376

原创 Zynq启动CPU1的步骤(寄存器A9_CPU_RST_CTRLS)

最近要用到Zynq的AMP,看了xapp1079,关于CPU0启动CPU1的介绍还是比较细腻的,摘录之。SDK中的代码:print("CPU0: writing startaddress for cpu1\n\r"); { /* * Reset and start CPU1 * - Application for cpu1 exists at

2016-12-17 11:37:21 4739 3

转载 assert和de-assert的理解

在很多手册中会经常用到assert和de-assert,它不单单是拉高或拉低,而是使能与禁能的意思,解释如下:assert: Drive a signal to its active voltage level, either high or low.deassert: Drive a signal to its inactive voltage level, either high

2016-12-17 11:05:23 5977

原创 设备树中address-cells和size-cells的含义

#address-cells = ; 基地址、片选号等绝对起始地址所占字长(32位)#size-cells = ;  长度所占字长(32位)譬如cpus { #address-cells = ; #size-cells = ; cpu@0 { compatible = "arm,cortex-a9";

2016-12-15 15:07:20 21960 7

原创 uboot下make xxx_config的由来

uboot里需要执行 make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_me_config但我并没有找到zynq_me_config这个文件,百思不解。内核文件是包含在arch/arm/configs里,不过uboot似乎没有类似的路径。OK,已解决。xxx_config并不是一个文件,首先1、在\include\con

2016-12-13 15:50:36 850

原创 调试信息分级打印DIY

#define DEBUG_GENERAL 0x00000001 /* general debug messages */#define DEBUG_INFO 0x00000002 /* More debug information */#if defined (FSBL_DEBUG_INFO)#define fsbl_dbg_current_types ((DEBUG_IN

2016-12-06 17:45:07 649

原创 C语言写excel文件(csv格式)

csv:简化版excel,在PC机上等同于excel,可进行各种excel计算、画图。#define EACH_FILE_MAX_BYTE 52428800//-------------------------------------------------------------------// 功能:存放数据为csv格式// 输入: filename 写入U盘的文件名称,如ai.

2016-12-06 15:25:46 11909

原创 Qt Creator看不到源码

使用Qt Creator打开工程后,一片空白,看不到任何源码或界面文件,不过可以编译。1、点击“控件”->“显示边框”;2、点击“类型层次”右边的向下箭头,选择“项目”即可。

2016-11-24 11:17:56 3690

原创 Linux开发--不编写驱动前提下应用层如何直接访问实地址

实地址可以通过mmap()映射成虚地址,所以可以不写驱动,应用层直接映射并读写相应地址。Xilinx又将mmap()封装了一个XilIOCreate(),更加方便。所以经常说IO和memory是一回事。原来如此。

2016-11-16 10:10:15 950

原创 xil_xio.c

u8 Xil_In8(INTPTR Addr){return *(volatile u8 *) Addr;}/*****************************************************************************//**** Performs an input operation for a 16-bit me

2016-11-14 14:15:56 1082

翻译 Zynq的PL-PS中断在设备树中的描述

http://blog.csdn.net/klaus_wei/article/details/42915545dma-channel@40400000 {compatible = "xlnx,axi-dma-mm2s-channel";interrupts = ;xlnx,datawidth = ;xlnx,device-id = ;};interrup

2016-11-11 16:31:06 4619

原创 Linux内核操作GPIO

#include static int xxx_probe(struct platform_device *ofdev){ int ret; //Zynq MIO15 ret = gpio_request(15, "gpio15"); if(ret < 0) return -1; ret = gpio_direction_output(15, 0); if(ret

2016-10-17 17:11:12 623 1

原创 Linux下使用代码调用命令行

//核心函数:popen#include #include #include "Hzhy_Rtc.h"static char cmd_get_tm[] = "date \"+%Y-%m-%d %H:%M:%S\""; //应答格式:2013-02-19 13:14:19static char cmd_set_tm[8] = "date -s "; //date -s

2016-10-15 11:58:50 770

原创 Linux 4.6 phy驱动调试

最新版本的Linux(4.6)中对phy驱动的调试略有不同,记录下。1、设备树、congfig等与以往相同,不赘述;2、内核在注册phy时使用of_mdiobus_register(),其中增加了一个of_mdiobus_child_is_phy()的判断机制,其意思是判断要增加的这个节点是phy还是设备。该函数内有个白名单数组whitelist_phys[],开发人员需将要增加的phy名

2016-08-16 18:38:48 3339 1

原创 PHY驱动心得

真是读书十年不如听君一言啊!Linux下的PHY驱动,一直不得入其门,晕的不要不要的。结果听了公司一位小美女老师的讲解,颇有点打通经脉的感觉!要摸索的细节还有很多,但模型的路子是通了。开心~下篇再具体整理吧。。。

2016-07-28 11:06:27 3039

原创 Linux CAN驱动及测试总结

平台:Zynq-7010    内核:Linux3.14.52Xilinx官网CAN驱动相关:http://www.wiki.xilinx.com/Linux+CAN+driver1、内核中开启CAN总线:    1)进入内核源码顶层目录 cd /opt/hzzd/linux/linux-xlnx-xilinx-v2014.2.01/    2)make ARC

2016-07-28 09:15:28 6672 1

原创 Linux errno.h和delay.h

两个小知识点总结,基于Linux3.14.52:1、位于linux-3.14.52\include\uapi\asm-generic#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No suc

2016-06-06 14:52:38 1585

原创 Linux 编码转换 (iconv失败的解决方法)

一开始,调用iconv_open()会返回-1,使用printf("errno=%d\n",errno)查看,返回22,说是invalid argument参数非法。试了下,确定不是UTF-8或utf-8的大小写问题。然后按博客http://blog.csdn.net/love_life2011/article/details/7086910#comments所述,更新iconv函数簇为较新版

2016-06-02 17:22:43 24128 5

转载 linux下错误的捕获:errno和strerror的使用

原文地址:https://www.douban.com/note/165931644/经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。    在程序代码中包含 #include ,然后每次程序调用

2016-05-12 11:23:44 747 1

原创 Notepad++ 移动到另一视图之上下/左右结构

我使用的是Notepad++ v6.9.1版本。Notepad++有个“移动到另一视图”功能,当需要比较两个文件时非常方便。两个视图的分布可以是左右式,也可以是上下,看各人习惯。今天我终于找到了切换上下或左右的方法,记录如下:如下图,必须在红框标注的那个黑色小箭头上右击,将出现“Rotate to right”/"Rotate to left"的选项。这两个选项就是调整上下还是左右显示的。

2016-05-12 10:44:51 9133 2

原创 Linux头文件路径之困惑

之前做的一直是IDE,对makefile、命令行之类接触不多。很是困惑Linux中的头文件。譬如#include ,譬如#include ,绝对路径是什么。。。搜索了下具体的文件,发现往往有多份,路径也千奇百怪。譬如 内核/include/linux/...,再譬如 内核/include/uapi/linux/...,具体是怎么个区别?网上有篇帖子讲的挺好,http://blog.cs

2016-05-10 15:37:27 2359

原创 Linux container_of()

2016-05-09 09:54:31 334

原创 疑问:Linux中同一个头文件,可否既被驱动代码调用、又被应用代码调用?

苦恼。一是没搞明白诸如#include ,其绝对路径是什么(是在"内核/include/"下吗);二是不清楚.h文件也属于内核空间或用户空间吗,是二者只能选一吗;惊呆了。。。

2016-05-06 17:59:37 308

原创 Linux设备号

1、设备号分主设备号和次设备号;2、应用程序通过设备文件的主设备号找到对应的设备驱动;3、如果多个设备的主设备号相同,那代表这些设备共享同一个设备驱动。设备驱动将通过次设备号区分具体操作的是哪个设备;4、相关的一些函数:设备号的数据类型:dev_t(unsigned int)主设备号=MAJOR(设备号)次设备号=MINOR(设备号)设备号=MKDEV(主设备号

2016-05-05 18:18:57 370

GOOSE报文收发工具

GOOSE报文收发工具,同时支持SV、SNTP。

2017-03-28

wavecom GR64 Q64模块的联网步骤

wavecom GR64 Q64模块的联网步骤 真实研发总结,产品已量产,完全可行。

2011-03-12

CRC校验源码,包括CRC8和CRC16两种,采用查表法

CRC校验源码,包括CRC8和CRC16两种,采用查表法

2010-09-27

时钟芯片DS3231的读写驱动源码

时钟芯片DS3231的读写驱动源码,I2C方式,代码完善,在Keil3 环境编译通过。

2010-09-25

MPLAB C18编译错误警告提示总结

逐条详细解释了编译时所报错误的意思,并对该错误出现的可能原因进行分析。 觉得不错,就上来了。

2010-01-29

MAPLAB C18 C编译器入门

MAPLAB C18 C编译器入门 微芯的数据手册,还是比较不错的。很详细,很全面。 说实话,资料是Microchip的,我不应该要钱的,可我还是要了。研发的老鸟不稀罕这个,想学点东西的新人又把它当宝贝。 加油加油! 有啥需要,再跟我讲哈。[email protected]

2010-01-29

手机行业新手入门的一些概念集锦

手机行业新手入门的一些概念集锦。包含手机使用的基本通信知识、系统结构、存储、编码、功能模块等等。 与大家共勉。

2008-10-27

按键扫描(三角阵连线)

C语言编写的按键扫描程序,三角阵连线,非常用矩阵行列式。工程中截剪,不是很全面,但可窥按键扫描之一斑。

2008-10-05

嵌入式系统智能手机(PDA)设计方案

随着手持通信设备市场的快速发展,手机的功能逐渐增多。现在手机已经不只是用于语音通信的手持设备,而成为集成了短信、彩信、上网以及移动办公等附加功能的嵌入式通信平台。

2008-10-04

空空如也

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

TA关注的人

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