自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Herok

擅长C/C++/linux/python/深度学习

原创 华容道算法之性能优化

上篇文章讲解了华容道算法基本算法知识,也是最简单的,效率也是最低的。这篇文章讲解高效率算法。从下篇文章开始主要分析linux 驱动代码以及嵌入式相关设计知识。本次编码采用棋子在棋盘中的位置编码,顺序是从左往右/从上到下。以横刀立马举例说明。正方形的应该是1(记得从0开始计算),横方块值是0x80 ...

2019-04-11 17:43:45 965 0

原创 华容道算法基础版

今天来聊聊华容道算法具体实现方法,华容道算法我会通过链表和红黑树两种方法实现查找算法,程序体现出来的效率差别很大。 本篇文章拿华容道横刀立马做分析,华容道游戏下图所示。游戏原理是每个方块每次只可以移动一个方格,如何将正方形移除到方块外部。拿到这个需求我们首先需要构建数学模型,该游戏设计到的方块数...

2019-03-21 10:43:09 2708 0

原创 Linux平台PCIe驱动编写

以前文章分析了PCIe整个系统知识,包括如何扫描PCIE树,这篇文章讲解一下当拿到一个PCIe设备时如何编写驱动程序。编写驱动程序在应用程序中编写,同样可以在内核层编写驱动。 从应用层编写驱动主要是使用pcilib库和/dev/mem接口,下面开始分析代码。根据pcie设备的厂家ID和设备ID初...

2019-03-21 10:27:58 3001 7

原创 人工智能之字符识别

1 概述 上篇文章讲解了PCA主成分分析,这篇文章使用该训练模型实现验证码识别,同时作者也会提供全部源代码。希望能够帮助到大家。 2 图像原理 在计算机图形学里,位图就是一个像素的矩阵,矩阵中的每一个点都是各种颜色的点,最后总体上来看就是一副图像。如何显示每一个像素的具体颜色,有很多种颜色空间,最...

2019-01-15 17:51:32 10199 0

原创 平衡二叉树

上篇文章分析了二叉结构,这篇文章讲解平衡二叉树(AVL),有二叉树就能够实现基本的算法结构,为什么还需要引入平衡二叉树呢,下面看一个二叉树示例。按照二叉排序树格式插入序列{1,2,3,4,5,6,7,8,9},如果不进行旋转将得到图 1中链式存储格式,当需要查找数字9需要比对9次,经过旋转后将的到...

2019-01-11 14:28:34 191 0

原创 二叉树排序

1 树的概念 树是一种数据结构,其中一个元素可以有两个或者多个数据元素,具有一对多的特点,用树结构来存储文件。树的基本概念如下: 结点的度:子结点的个数。 树的度:树的度等于所有结点度中度最高的值。 叶子结点:度为0的结点,即没有子结点的结点。 分支结点:除了叶子结点以外的结点,即度不为...

2018-12-19 15:18:47 717 3

原创 解读gcc和g++编译器分别对c与c++文件影响

概述 为什么需要解读gcc/g++编译器对c/c++文件的影响呢?由于系统内核一般是使用C语言来编写的,系统内核中用C语言实现了很多库。而上层应用程序有可能是用C++来开发,如果在内核库函数头文件中不用extern“C”来声明库函数的话,在编写C++应用程序时,包含库头文件,在C++文件链接时就会...

2018-12-19 15:17:09 2668 3

原创 往linux内核函数挂钩子

概述 本文讲解替换一个已经在内存中的函数,使得执行流流入我们自己的逻辑,然后再调用原始的函数。比如有个函数叫做funcion,而你希望统计一下调用function的次数,最直接的方法就是如果有谁调用function的时候,调到下面这个函数就好了。 void new_function() { ...

2018-11-28 14:10:10 1466 0

原创 从cpu角度理解PCIe续集

概述 上篇文章剩下两个问题,上电扫描PCIe树和存储地址到PCIe地址的映射,本篇文章将对这两个问题做出解答。本文可能会针对某一款芯片做出详细流程解答,读者可以只关注整个流程,具体映射机制和寄存器参考芯片datasheet。上篇文章已经了解到如何访问配置空间,前256Bytes可以通过寄存器方式访...

2018-11-07 13:06:41 1981 3

原创 从cpu角度理解PCIe

概述 为什么需要写这篇文章,当我阅读《深入浅出SSD》这篇书籍中PCIe章节时发现,本书籍的侧重点是放在PCIe控制器和PCIe协议上,从CPU角度理解PCIe知识偏少,本文对下面几个知识点做出一些补充。 CPU访问外设寄存器与内存编址方式; CPU如何访问PCIe配置空间; CPU能够通过...

2018-10-24 10:34:53 4942 0

原创 浅谈CPU寻址内存机制

本文讲解的内容是Processor如何访问内存,TLB Cache和MMU的在Processor中扮演的角色。涉及的硬件平台是Xilinx Zynq-7000,dual-core ARM® Cortex-A9 MPCore,架构是armv7,下面分别对TLB、MMU、Processor如何访问ca...

2018-10-07 10:49:57 2466 0

原创 Cache地址映射

  理解Cache地址映射之前补充一些基础知识,Cache的地址映射和MMU(内存管理单元)和TLB Cache(转译查找缓存)中的映射是有区别的。Cache、TLB Cache、MMU在CPU中结构如图1所示,图1展现的是Cortex A9 Processor内部结构,采用的指令和数据总线分开的...

2018-09-01 15:17:35 5468 0

原创 几行C代码剖析Cache参数

Cache的容量一般都很小,即使是最大的三级 Cache(L3)也只有20MB ~30MB。cache加快了CPU对内存的读写速率,CPU第一次执行需要将数据时候需要从主存-->L3 Cache--->L2 Cache -->L1 Cache传递到CPU的...

2018-08-20 16:31:34 1127 0

原创 深入浅出cache写策略

随着计算机行业的飞速发展,CPU的速度和内存的大小都发生了翻天覆地的变化,在处理器速度不断增加的形势下,处理器处理数据的能力也得到大大提升。数据是存储在内存中的,内存吞吐率虽然得到很大的提升,但是相对于处理器来讲,仍然非常慢。处理器要从内存中直接读取数据都要花大概几百个时钟周期,在这几百个时钟周期...

2018-08-20 16:25:47 5401 0

原创 CPU性能发展所遇到的瓶颈

通常一个处理器通常包含多个核心(Core),集成 Cache 子系统,内存子系统通过内部或外部总线与其通信。在经典CPU中一般有两个常用的组件:北桥(North Bridge)和南桥(SouthBridge)。它们是处理器和内存以及其他外设沟通的渠道。图1给出了处理器、内存、南北桥以及其他总线之间...

2018-08-13 14:15:17 5471 0

原创 华容道穷举算法实现

1、广度优先的树型结构由于整个棋局的可行解可以描述成一个树型结构,并且为了得到最少移动步数需要采用广度优先的搜索算法,因此考虑将链表与树型结构整合起来,便于进行广度搜索。如图,当我们试图搜索第三步可行解时,只需要顺着第二步的链表依次搜索便可以实现了。2、堆栈结构输出最少步数由于在树型结构设计上,每...

2018-07-03 15:09:27 3378 2

转载 MAC/PHY与MII(GMII/SGMII/RGMII)

  MAC(Media Access Control)即媒体访问控制子层协议。 该部分有两个概念:MAC可以是一个硬件控制器 及 MAC通信以协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。 MAC硬件大约就是下面的样子: 在发送数据的时候,M...

2020-06-28 19:22:23 94 0

转载 SMI(MDC/MDIO)总线接口介绍

1. MDIO接口 SMI:串行管理接口(Serial Management Interface),也被称作MII管理接口(MII Management Interface),包括MDC和MDIO两条信号线。MDIO是一个PHY的管理接口,用来读/写PHY的寄存器,以控制PHY的行为或获取PHY的...

2020-06-28 19:17:53 111 0

转载 高速硬件接口

DLM: dual-lane modules, 是双差分收和发对接口,共有4对差分总线,收和发各两对, 可以复用的总线: sgmii, qsgmii, rxaui,pcie,sata. QLM: quad-lane modules, 是4差分收和发对接口,共有8对差分总线,收和发各4对, 可以复...

2020-06-24 17:26:14 66 0

转载 交换机的工作原理

原文链接:链接 一、交换机的工作原理      当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去。交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所有MAC地址与该交换机各端口的对应信息。某...

2020-06-01 16:43:06 89 0

转载 路由器和交换机的区别?

(1)外形上 交换机通常端口比较多,路由器端口少体积小,(路由器一般都集成了交换机的功能,LAN口就是作为交换机的端口来使, WAN用于连接外网的端口。 (2)工作层次不同 交换机在数据链路层(实现数据帧的转发),而路由器在网络层(肩负着网络互连的作用)。 (3)数据的转发对象不同 交...

2020-06-01 16:16:14 167 0

转载 win10安装cuda10.0以及VS2013下的CUDA编程测试

win10安装cuda10.0以及VS2013下的...

2020-04-29 16:25:34 242 1

转载 YOLOv3 算法的一点理解

<p>今天讲一讲 YOLOv3, 目标检测网络的巅峰之作, 疾如风,快如闪电。</p> 算法背景假设我们想对下面这张 416 X 416 大小的图片进行预测,把图中 dog、bicycle 和 car 三种物体给框出来,这涉及到以下三个过程: ...

2020-03-20 16:21:06 775 0

转载 YOLOv3使用笔记——Kmeans聚类计算anchor boxes

        anchor boxes用来预测bounding box,faster rcnn中用128*128,256*256,512*512,分三个尺度变换1:1,1:2,2:1,共计9个anchor来预测框,每个anchor预测2000个框左右,使得...

2020-03-19 16:20:30 317 0

转载 一文读懂GAN, pix2pix, CycleGAN和pix2pixHD

本文翻译、总结自朱俊彦的线上报告,主要讲了如何用...

2020-03-12 17:19:26 117 0

转载 『TensorFlow2.0正式版』极简安装TF2.0正式版(CPU&GPU)教程

转载https://xiaosongshine.blog.csdn.net/article/details/101844926#comments 0 前言 TensorFlow 2.0,今天凌晨,正式放出了2.0版本。 不少网友表示,TensorFlow 2.0比PyTorch更好用,已经准备...

2020-02-21 10:41:00 359 0

原创 集显显示与独显运算

博主手上有一块显卡,支持视频接口是DVI,而显示屏接口只有VGA和HDMI。这样的情况显示屏不能接在显卡,当插上显卡显示屏不亮的情况出现了,然后拔掉显卡后显示屏还是不亮,最终分析找到原因如下。 当独显和集显同时候工作时,BIOS默认设置时自动切换,并且优先选择独显,当插上独显后视频就从独显输...

2020-02-21 09:46:07 542 0

原创 深入浅出机器学习CIFAR实战

CIFAR是另外一种数据集,包含了如下10中数据。 本次实验采用VGG网络模型,精度非常高,resnet残差网络模型没有测试成功,在拟合时候一直不收敛 加载数据集 (x,y), (x_test, y_test) = datasets.cifar10.load_data() 剔除标签多...

2019-11-30 15:07:37 86 0

原创 MNIST数据集下载与读取

数据集下载连接:https://download.csdn.net/download/qq_21792169/12007051 解压后格式如下: 代码如下: import numpy as np import struct import matplotlib.pyplot as plt...

2019-11-30 14:34:35 244 0

原创 深入浅出机器学习MNIST实战(三)

卷积网络创建,卷积层后是池化层,第三层卷积层后添加了压平层Flatten,三个全连接层 model = models.Sequential() # 第1层卷积,卷积核大小为3*3,32个,28*28为待训练图片的大小 model.add(layers.Conv2D( 32, (3, 3...

2019-11-30 14:27:13 282 0

原创 深入浅出机器学习MNIST实战(二)

上篇文章采用的是TensorFlow2.0接口函数,这里讲解一下自定义函数。 加载数据 (x, y), (x_test, y_test) = datasets.mnist.load_data() 转换成张量并且将数据归一化到0~1 x = tf.convert_to_tensor(x,...

2019-11-30 14:15:24 126 0

原创 深入浅出机器学习MNIST实战(一)

第一次接触机器学习,觉得这个方向挺有趣的,人工智能是未来IT发展的趋势。人工智能,机器学习,神经网络,深度学习的相互之间的关系如图所示。 同样机器学习分为有监督学习,无监督学习,强化学习三类,本次实验从最简单的有监督学习入手。神经网络目前有两种主要方向分类与回归,比如区分猫和狗属于分类问题,...

2019-11-30 13:53:38 135 0

原创 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block

在制作根文件系统,在U-boot阶段通过nfs挂载文件系统后出现了该问题,这个问题网上已经有很多解答,但是没有一个是我需要的。我出错的现象如下: 在此期间我尝试了很多种方法都没有得到解决,并且我在nfs服务器端查看Log发现有nfs mount迹象,这就很奇怪了,我通过抓包软件抓nfs的交互...

2019-07-18 17:28:37 211 0

原创 am437x ubi文件系统制作问题解决方案

由于工作原因,需要用到这款芯片,但是官方提供的dameo是从文件系统中烧写U-boot,设备树,内核,文件系统等操作。这种方式很不方便生产,于是打算走最常规的思路,从u- boot中去烧写,于是需要制作Ubi文件系统镜像。制作流程如下: 首先看一下mtd分区情况 0: NAND.SPL ...

2019-07-17 17:53:37 128 0

原创 qmake 添加额外参数 分开编译

qmake添加传参,生成不同的Makefile,可用于不同场景。使用方法如下: 传一个参数: arm-qmake "TARGET = ax03" ax03.pro 传两个参数: arm-qmake "TARGET=xinetd" "DEFI...

2019-07-11 11:30:46 443 0

原创 dtc工具下载

下载链接:https://mirrors.edge.kernel.org/pub/software/utils/dtc/

2019-05-28 17:16:01 663 0

原创 g++编译线程失败

源代码test.cpp: 编译结果如下: 用g++编译会出现上述错误,如果将文件名改成test.c,同时使用gcc编译,那么就能够正常编译通过,最后查找原因是C++禁止将void指针随意赋值给其他指针,因为定义函数时,程序没有定义函数指针的类型,那么默认就是void *型,注意代码中函...

2019-05-28 17:05:36 188 1

转载 警告“未引用的形参/局部变量”的消除方法

如果我们编译以下代码: #include <stdio.h> int main(int argc, char** argv) { int n; int nRet = printf("Hello, world!"); return 0; } 编译器...

2019-05-28 16:55:59 2559 0

原创 spi ioctl无效参数解决

方法一: struct spi_ioc_transfer tr; /* 这种写法一定要赋初值 */ memset(&tr,0,sizeof(struct spi_ioc_transfer)); tr.tx_buf = (unsigned long)tx; tr.rx_buf =...

2019-05-24 15:14:26 1012 0

原创 udp recvfrom返回-1 Invalid argument

UDP的sendto对应着recvfrom,一发一收.如果sendto的数据大于MTU,则会在IP层分片发送,到达目标后由IP层重组,再从recvfrom一次性返回.如果使用IP层分片重组则存在乱序,丢包,重包的问题.调用一次sendto,只要数据长度小于MTU都会以一个独立的UDP包发送.rec...

2019-05-24 14:00:19 582 0

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