<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[violet089的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/violet089</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; violet089]]></copyright><item><title><![CDATA[自调试打印]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/127735884</link><guid>https://blog.youkuaiyun.com/violet089/article/details/127735884</guid><author>violet089</author><pubDate>Mon, 07 Nov 2022 17:43:12 +0800</pubDate><description><![CDATA[自调试打印函数]]></description><category></category></item><item><title><![CDATA[关于STM32H743 recv()数据错误的问题分析]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/113105771</link><guid>https://blog.youkuaiyun.com/violet089/article/details/113105771</guid><author>violet089</author><pubDate>Mon, 25 Jan 2021 11:14:09 +0800</pubDate><description><![CDATA[问题描述

中位机使用TCP方式接收数据时可能出现数据错误，出错概率极高，大约接收300字节内必出。错误如下：





最终结论

中位机使用ST厂商自带的HAL库，该源代码在关闭网络接收的DCache（数据缓存）功能时有bug，可能导致部分区域的DCache未被关闭，从而导致TCP接收时可能从不正确的数据来源区拷贝数据，从而出错。

软件环境

HAL库版本号： STM32H7xx HAL V1.9.0

STM32CubeMX版本： 6.1.0

中位机MCU： STM32H743

LWIP版本：.]]></description><category></category></item><item><title><![CDATA[2020-08-29]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/108295333</link><guid>https://blog.youkuaiyun.com/violet089/article/details/108295333</guid><author>violet089</author><pubDate>Sat, 29 Aug 2020 15:37:11 +0800</pubDate><description><![CDATA[清晰地感知到了自己的瓶颈。

]]></description><category></category></item><item><title><![CDATA[CRC校验和LCRC校验]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/78830803</link><guid>https://blog.youkuaiyun.com/violet089/article/details/78830803</guid><author>violet089</author><pubDate>Mon, 18 Dec 2017 10:53:42 +0800</pubDate><description><![CDATA[/* 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]]></description><category></category></item><item><title><![CDATA[Delphi压缩access数据库]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/78415320</link><guid>https://blog.youkuaiyun.com/violet089/article/details/78415320</guid><author>violet089</author><pubDate>Wed, 01 Nov 2017 16:22:01 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[Delphi读写注册表]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/78212297</link><guid>https://blog.youkuaiyun.com/violet089/article/details/78212297</guid><author>violet089</author><pubDate>Thu, 12 Oct 2017 10:54:00 +0800</pubDate><description><![CDATA[procedure EnumComPorts(Ports: TStrings);
var
  KeyHandle: HKEY;
  ErrCode, Index: Integer;
  ValueName, Data: string;
  ValueLen, DataLen, ValueType: DWORD;
  TmpPorts: TStringList;
begin
  ErrCode :=]]></description><category></category></item><item><title><![CDATA[Delphi读写ini文件示例]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/78201114</link><guid>https://blog.youkuaiyun.com/violet089/article/details/78201114</guid><author>violet089</author><pubDate>Wed, 11 Oct 2017 10:48:16 +0800</pubDate><description><![CDATA[var
  iniFile: TiniFile;
  index: integer;
  price: double;

begin  
  iniFile := TiniFile.Create('.\config.ini');	//ini文件与exe同目录
  index := iniFile.ReadInteger('配置', '编号', 0);
  price := iniFile.Read]]></description><category></category></item><item><title><![CDATA[程序员和项目经理之间的恩怨情仇]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/76497392</link><guid>https://blog.youkuaiyun.com/violet089/article/details/76497392</guid><author>violet089</author><pubDate>Tue, 01 Aug 2017 09:49:31 +0800</pubDate><description><![CDATA[偶有所感，偶有所读，天大地大，两个互相看不上眼的人何必挤在一艘小船上。记录之。
http://www.cnn6.net/html/itok/2017731/202425.html?ref=myread



程序员和产品经理之间的恩怨情仇


时间:2017年7月31日来源:互联网 作者:小恩 我要评论

一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车，他们发现列车上]]></description><category></category></item><item><title><![CDATA[好与坏的程序员：如何客观评价程序员的水平？]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/76492346</link><guid>https://blog.youkuaiyun.com/violet089/article/details/76492346</guid><author>violet089</author><pubDate>Tue, 01 Aug 2017 09:39:41 +0800</pubDate><description><![CDATA[开源中国上读到一篇文章，深以为然，引用保存之。
https://www.oschina.net/news/87295/good-and-bad-programmer



好与坏的程序员：如何客观评价程序员的水平？

 局长 发布于2017年08月01日 收藏
 16 评论
 8




  

1
有感于知乎上的一篇关于程序员的讨论。让我突然之间心有戚戚然的感觉]]></description><category></category></item><item><title><![CDATA[excel将一行或一列转换为10个的方阵]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/76096100</link><guid>https://blog.youkuaiyun.com/violet089/article/details/76096100</guid><author>violet089</author><pubDate>Tue, 25 Jul 2017 19:45:12 +0800</pubDate><description><![CDATA[=INDEX(Sheet1!$B$3:Sheet1!$B$1343,(ROW()-3)*20+COLUMN()-1)]]></description><category></category></item><item><title><![CDATA[封装自己的printf]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/75150991</link><guid>https://blog.youkuaiyun.com/violet089/article/details/75150991</guid><author>violet089</author><pubDate>Sat, 15 Jul 2017 11:47:35 +0800</pubDate><description><![CDATA[#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;
}]]></description><category></category></item><item><title><![CDATA[生成随机数rand()]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/68924648</link><guid>https://blog.youkuaiyun.com/violet089/article/details/68924648</guid><author>violet089</author><pubDate>Fri, 31 Mar 2017 14:13:46 +0800</pubDate><description><![CDATA[#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));
}]]></description><category></category></item><item><title><![CDATA[bmp格式解析]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/56281298</link><guid>https://blog.youkuaiyun.com/violet089/article/details/56281298</guid><author>violet089</author><pubDate>Tue, 21 Feb 2017 14:03:43 +0800</pubDate><description><![CDATA[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;

   //]]></description><category></category></item><item><title><![CDATA[Android开发与Linux开发的区别与联系（入门）]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/54965266</link><guid>https://blog.youkuaiyun.com/violet089/article/details/54965266</guid><author>violet089</author><pubDate>Fri, 10 Feb 2017 11:37:11 +0800</pubDate><description><![CDATA[1、Android的目录路径等不明，Linux代码如何移植进Android相应目录不知；
2、目前Linux内核代码放置在\\192.168.1.190\share\android\kernel_imx；
3、安卓下编译Linux内核的方法（PC机使用ssh调试）：
#! /bin/bash
date > build_boot.log
cd kernel_imx/
source ./quic]]></description><category></category></item><item><title><![CDATA[Linux网卡能接收不能发送bug eth0 tx packets:0]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/54583534</link><guid>https://blog.youkuaiyun.com/violet089/article/details/54583534</guid><author>violet089</author><pubDate>Tue, 17 Jan 2017 15:33:18 +0800</pubDate><description><![CDATA[今天调试新板卡，遇到一个很奇怪的现象，eth0能收不能发，使用ifconfig -a查看，发现tx packets一直为0。
经过排查网线故障、交换机故障一系列之后，我用板卡自ping，发现也不通，故怀疑是网卡驱动故障。经检查，网卡使用了新的phy芯片，设备树配置的确有问题，更改后正常。]]></description><category></category></item><item><title><![CDATA[TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/53944358</link><guid>https://blog.youkuaiyun.com/violet089/article/details/53944358</guid><author>violet089</author><pubDate>Fri, 30 Dec 2016 16:18:28 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/azraelly/archive/2012/12/25/2832393.html







在TCP层，有个FLAGS字段，这个字段有以下几个标识：SYN, FIN, ACK, PSH, RST, URG.
其中，对于我们日常的分析有用的就是前面的五个字段。
 它们的含义是：
SYN表示建立连接，
FIN表示关闭连接，
A]]></description><category></category></item><item><title><![CDATA[Linux uboot下新增phy的生效流程解析（Zynq平台）]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/53925080</link><guid>https://blog.youkuaiyun.com/violet089/article/details/53925080</guid><author>violet089</author><pubDate>Thu, 29 Dec 2016 10:51:41 +0800</pubDate><description><![CDATA[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，]]></description><category></category></item><item><title><![CDATA[Zynq启动CPU1的步骤（寄存器A9_CPU_RST_CTRLS）]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/53705400</link><guid>https://blog.youkuaiyun.com/violet089/article/details/53705400</guid><author>violet089</author><pubDate>Sat, 17 Dec 2016 11:37:21 +0800</pubDate><description><![CDATA[最近要用到Zynq的AMP，看了xapp1079，关于CPU0启动CPU1的介绍还是比较细腻的，摘录之。
SDK中的代码：
print("CPU0: writing startaddress for cpu1\n\r");

    {
    	/*
    	 *  Reset and start CPU1
    	 *  - Application for cpu1 exists at]]></description><category></category></item><item><title><![CDATA[assert和de-assert的理解]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/53705354</link><guid>https://blog.youkuaiyun.com/violet089/article/details/53705354</guid><author>violet089</author><pubDate>Sat, 17 Dec 2016 11:05:23 +0800</pubDate><description><![CDATA[在很多手册中会经常用到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 ]]></description><category></category></item><item><title><![CDATA[设备树中address-cells和size-cells的含义]]></title><link>https://blog.youkuaiyun.com/violet089/article/details/53670758</link><guid>https://blog.youkuaiyun.com/violet089/article/details/53670758</guid><author>violet089</author><pubDate>Thu, 15 Dec 2016 15:07:20 +0800</pubDate><description><![CDATA[#address-cells = ; 基地址、片选号等绝对起始地址所占字长（32位）
#size-cells = ;  长度所占字长（32位）


譬如
cpus {
        #address-cells = ;
        #size-cells = ;
        cpu@0 {
            compatible = "arm,cortex-a9";
  ]]></description><category></category></item></channel></rss>