自定义博客皮肤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)
  • 资源 (3)
  • 收藏
  • 关注

原创 Musl libc的arm port不支持NEON加速的原因

近期处理Tina上的一个客户问题,问题的大概情况是在运行客户应用过程中,频繁出现CPU占用率%100的情况,除了优化应用外,通常处理这类问题的方式是尽可能把加速单元打开,这些加速包括专用硬件加速以及CPU的通用加速,以ARM CPU为例,典型的加速方式就是开启ARM NEON加速功能。当我试图在方案中启用NEON加速的时候,却发现了意外情况,就是MUSL LIBC的LIBC库,竟然没有使用NEON指令去实现...

2021-08-28 18:51:37 294

原创 Linux内核实时线程throtted机制

根据以上LOG和分析,我们可以得出结论如下:1.4核有4个struct rq_rq队列,每一个核有一个,相应的有四个throttled变量。2.throttled的置位逻辑在函数sched_rt_runtime_exceeded中进行,它的判断依据就是上面配置的sched_rt_runtime_us节点信息。

2021-08-28 09:08:31 2453 1

原创 给ubuntu18.04系统内核升级rt-patch补丁

下载原料:内核:https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.138.tar.xz补丁:https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.4/patch-5.4.138-rt62.patch.gz解压,打补丁:将内核和补丁解压,解压后的patch-5.4.138-rt62.patch文件拷贝到内核目录下,执行如命令给内核打上RT补丁

2021-08-24 23:30:11 2058

原创 kswapd线程的前世今生

为了避免在CPU忙碌的时候,也就是在缺页异常发生的时候,临时搜索可供换出的内存页面并加以换出,Linux内核定期地检查系统的空闲页面数量是否小于预定义的极限,一旦发现空闲页面数太少,就预先将若干页面换出,以减轻缺页异常发生时系统所承受的负担,当然,由于无法确切地预测页面的使用,即使这样做了也还可能出现缺页异常发生时内存依然没有足够的空闲页面。但是,预换出毕竟能减少空闲页面不够用的利率。

2021-08-24 19:54:22 466 1

原创 感受野随网络深度变化的规律

以3*3*1的卷积核为例,看感受野随着神经元层数加深的变化规律:结束!

2021-08-22 17:13:52 1044

原创 编程获取Linux的内存占用和CPU使用率

Linux平台上有很多系统监控工具,自己用过的就有top、htop、glances,可以在上面看到系统平均负载,内存占用,CPU使用率等信息。除此之外还有uptime,lsblk,df,du,free,iftop等针对性查看系统资源的命令。准备在自己的程序中获取相关系统资源的信息,解析命令输出显得不伦不类,于是就找了找其它方法。

2021-08-21 11:07:15 2262

原创 Tensorflow 源码算子以及架构实现分析

本文参考https://www.tensorflow.org/install/source下载Tensorflow源码:git clone https://github.com/tensorflow/tensorflow.git下载完成后,可以看到,tensorflow目录结构如下:maliankang@AwExdroid112:~/tensorflow$ tree -L 2 -d.├── tensorflow│ ├── c│ ├── cc│ ├── compile......

2021-08-18 10:13:26 2420 2

原创 神经网路学习之利用LabelImg对图像标注

对于监督学习算法而言,数据决定了任务的上限,而算法只是在不断逼近这个上限。世界上最遥远的距离就是我们用同一个模型,但是却有不同的任务。但是数据标注是个耗时耗力的工作,下面介绍一个图像标注工具LabelImg。LabelImg是一个图形图像标注工具,它是用Python编写的,并使用Qt作为其图形界面。注释以PASCAL VOC格式(ImageNet使用的格式)保存为XML文件。此外,它还支持YOLO和CreateML格式。1.准备环境,安装依赖:在ubuntu系统上,安装依赖只需要敲入几个简单的命

2021-08-16 18:10:25 1408 1

原创 Linux IO调度(电梯算法)以及常用调试方式

Linux内核2.6开始引入了全新的IO调度子系统,IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯。 (elevator)而相应的算法也就被叫做电梯算法。而Linux中IO调度的电梯算法有好如下几种:as(Anticipatory)、cfq(Complete Fairness Queueing)、deadline、noop(No Operation)。具体使用哪种算法我们可以在启动的时候通过内核参数elev...

2021-08-12 12:21:27 3470 1

原创 Git&repo&grep操作技巧

比如如下命令将从dmesg LOG中过滤掉带有"logitec","usb","input", ...."systemd"字符的行。git clone后面可以跟文件系统中的版本库路径,或者NFS挂载到本地的虚拟文件系统,GIT访问协议URL,SSH,HTTP/HTTPS等URI定位仓库等。如下命令可以只下载最近的一份提交记录,而不会管之前的提交记录,这样可以有效减少仓库数据占用的空间大小,可以看到只有一条提交记录,符合我们的预期。命令来过滤日志文件中重要的条目,可以使用正则表达式或者其他搜索模式。

2021-08-11 12:28:34 1933

原创 Linux系统用户态根据虚拟地址获取物理地址的方式

之前做项目的时候,也会遇到过根据页表,由虚拟地址翻译物理地址的需求,一般的做法是HACK内核,在内核中加入HACK代码,思路无非就是通过页表进行转换,但是现在有了一种新的方式,这种方式下,不需要HACK内核,也不需要重新编译内核,便能够根据进程的虚拟地址,得到它的物理地址,下面展开介绍。

2021-08-09 20:10:01 3632

原创 嵌入式和服务器Linux系统下free -m Memory统计信息解析(VSS/RSS/PSS/USS)

由于MAP_SHARED FLAG的匿名页面,用的vm_ops是shmem_vm_ops,其PAGE FAULT中是从SHMEM分配页面的,其调用路径上的关键函数shmem_add_to_page_cache:将分配的页面增加到了NR_FILE_PAGES和NR_SHMEM上面:所以可以得到,SHARED的确实是BUFF/CACHE的一部分,不是USED的一部分,最早的说法更对。

2021-08-07 20:17:44 1140 1

原创 调试系统及ARM CPU挂死和总线挂死的DS-5(JTAG)调试方法

1.CSAT通过总线访问内存和CPU通过总线访问内存一样,都是不经过IOMMU的。2.所以,对于经过IOMMU映射的设备虚拟地址,只能通过设备本身发起访问请求,这样才经过IOMMU,得到正确的数据。3.DS5 memory view不经过IOMMU,所以设备映射的IOMMU 虚拟地址无法交给DS5 memory view去查看。

2021-08-07 15:49:02 3589 1

原创 Ubuntu18.04 搭建YOLOV4环境

下载代码,编译git clone https://github.com/AlexeyAB/darknetcd darknetmake下载预训练权重:验证:caozilong@caozilong-Vostro-3268:~/Workspace/yolo/darknet$ ./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights data/dog.jpg GPU isn't used ..

2021-08-01 16:45:28 3368 1

原创 Yolov3框架目标检测推理环境测试

1.Get darknet 代码$ git clone https://github.com/pjreddie/darknet$ cd darknet$ makecaozilong@caozilong-Vostro-3268:~/yolo$ git clone https://github.com/pjreddie/darknet正克隆到 'darknet'...remote: Enumerating objects: 5937, done.remote: Total 5937 (de

2021-08-01 14:44:12 1105

原创 Tina SDK 使用V833/V831 NPU跑YOLO网络

1.Tina SDK打开内核NNA驱动支持make kernel_menuconfig->打开 CONFIG_SUNXI_NNA这样,内核才会出现/dev/nna设备节点2.编译YOLO算法用例库算法用例库的布局如下图所示,编译前,需要调整Makefile中默认的编译器路径未正确路径:编译过程:编译生成了可执行测试文件yolo3将整个目录拷贝到TF卡上,卡挂载到V833平台上,输出警告不用管.2.运行测试用例首次执行yolo3用.....

2021-08-31 12:25:13 2049 9

原创 不同函数的梯度图像

1. 函数图像为:梯度图像:2.三维图像:梯度图像:3.z=x+y三维图像梯度图像:3.梯度图结束!

2021-08-29 09:30:17 14675

原创 DirctectFB架构分析

DirectFB (Direct Frame Buffer)是一组建立在Linux framebuffer 设备(fbdev)抽象层之上实现的图形api。DirectFB运行在Frame Buffer Device (/dev/fb)之上,并利用芯片组驱动程序的硬件加速,实现对图形图像的高效处理。它的架构如下图所示:注意图中的蓝色箭头,它是实现硬件加速的关键,我们以代码为例,分析一下DirectFB硬件加速的实现原理。获取代码:DirectFB的源很多,随便在gitee上找到一个仓库..

2021-08-27 19:09:27 1037 1

原创 关于UVC设备拥有两个/dev/video*节点的原因以及来历?

在ubuntu18.04/ubuntu16.04系统上,插入UVC设备,你会发现V4L2框架替它创建了两个video设备节点,分别是 /dev/video0, /dev/video1:

2021-08-27 12:59:10 6799 1

原创 VirtualBox安装OpenEuler操作系统

OpenEuler 也就是宇宙第一华为服务器操作系统 EulerOS,开源后命名为 openEuler。openEuler 面向企业级通用服务器架构平台,基于 Linux 稳定系统内核,支持鲲鹏处理器和容器虚拟化技术,特性包括系统高可靠、高安全以及高保障。openEuler 拥有三级智能调度,可以将多进程并发时延缩短 60%,而且还可以智能自动有规划,可将 Web 服务器性能提升 137%。下载地址:https://repo.openeuler.org/openEuler-20.03-LTS/ISO..

2021-08-26 23:06:35 2477 6

原创 usb控制器和usb port之间有什么联系-usbview工具的使用?

usbview 是一个可以查看usb 拓扑的工具,可以通过这个工具查看当前USB Host控制器的个数和连接device信息.

2021-08-24 14:30:39 2666

原创 Tina V833 UVC设备的支持

之后烧录。

2021-08-24 12:21:00 1683 3

原创 Mnist数据集解析

Mnist数据集是手写数字图像集,MNIST是机器学习领域最有名的数据集之一,被应用于从简单的实验到发表研究论文等各种场合。Mnist数据集是由0到9的数字图像构成,训练图像有6万张,测试图像有1万张,这些图像可以用于学习和推理。MNIST 数据集来自美国国家标准与技术研究所,National Institute of Standards and Technology (NIST). 训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来.

2021-08-23 22:48:05 5710 1

原创 Linux内核sysrq调试调优

1.sysrq机制的文件系统节点2.内核注册:在drivers/tty/sysrq.c中注册的此文件节点,系统依赖配置CONFIG_MAGIC_SYSRQ.3. 实现接口ops table的定义4.举例通过sysrq-trigger调整printk级别(当然也可以直接操作printk).echo 6 > /proc/sysrq-trigger查看内核堆栈:echo t > /proc/sysrq-trigger...

2021-08-22 22:16:05 534

原创 ubuntu18.04上安装anaconda-python深度学习环境

Anaconda是一套Python的发行版,发行版集成了必要的库,使用户可以一次性完成安装.Anaconda是一个侧重于数据分析的发行版,一些有助于数据分析的库,比如Numpy,Matplotlib,SciPy等都包括于其中,下面介绍如何在ubuntu18.04上安装anaconda.安装过程可能并不复杂,但是细节很多,下面开始技术流水帐:1.下载安装包访问anaconda官网的下载通道https://www.anaconda.com/products/individual#Download

2021-08-21 14:43:09 2258

原创 Ubuntu18.04安装CUDA深度学习环境以及OpenGL库对比

N卡在深度学习领域具备无可替代的地位,这里记录以下在我这台配备GF MX350 N卡笔记本 上安装cuda以及cuNN的具体步骤。MX350属于低端显卡了,一开始我还担心它会不会不支持CUDA,后面确认了一下,发现可以支持。关于确认N卡是否支持CUDA以及支持版本的具体步骤,可以参考我的这篇博客:如何确定PC Nvidia显卡是否支持CUDA以及cudaNN?过程不难,细节很多,下面记录具体步骤:1.安装显卡驱动:...

2021-08-20 19:20:16 6422

原创 LittleVGL体验记录

1.安装依赖:sudo apt-get install gcc g++sudo apt-get update && sudo apt-get install -y build-essential libsdl2-dev2.下载代码:git clone --recursive https://github.com/littlevgl/pc_simulator_sdl_eclipse.git3.编译caozilong@caozilong-Vostro-3268:.

2021-08-19 22:35:30 753

原创 GNU系统下内存对齐分配的记录

遇到一个内存对齐分配的问题,记录如下:在 GNU 系统中,malloc 或 realloc 返回的内存块地址都是 8 的倍数(如果是 64 位系统,则为 16 的倍数)。如果你需要更大的粒度,请使用 memalign, valloc或者posx_memalign。这些函数在头文件 “stdlib.h” 中声明。在 GNU 库中,可以使用函数 free 释放 memalign 和 valloc ,posix_memalign返回的内存块。但无法在 BSD 系统中使用,而且 BSD 系统中并未提供释放这

2021-08-18 12:10:40 364

原创 如何确定PC Nvidia显卡是否支持CUDA以及cudaNN?

Nvidia显卡几乎已经垄断了当前火热的神经网络训练领域,cudaNN是NVIDIA CUDA深度神经网络库 (cuDNN) ,而CUDA则是基于Nvidia的统一计算平台,界各地的深度学习研究人员和框架开发者都依赖 cuDNN 实现高性能 GPU 加速。借助 cuDNN,研究人员和开发者可以专注于训练神经网络及开发软件应用,而不必花时间进行低层级的 GPU 性能调整。cuDNN 可加速广泛应用的深度学习框架,包括Caffe2、Chainer、Keras、MATLAB、MxNet、PyTorch和T...

2021-08-17 19:31:08 7491 5

原创 Mnist网络算子分析之卷积

Mnist.onnx的网络结构如下:首先看一下,每一次计算图的遍历,执行了几次卷积:修改代码:diff --git a/src/default/Conv.c b/src/default/Conv.cindex f812c87..507d303 100644--- a/src/default/Conv.c+++ b/src/default/Conv.c@@ -268,6 +268,7 @@ static inline void dgemm_float64(int n, int m,

2021-08-16 22:51:10 295

原创 ubuntu下valgrind编译,应用

1.获取代码2.解压,配置,编译 $ tar xvf valgrind-3.17.0.tar.bz2 $ cd valgrind-3.17.0 $ ./autogen.sh $ ./configure $ make $ sudo make installcaozilong@caozilong-Vostro-3268:~/Workspace/valgrind/valgrind-3.17.0$ ./autogen.sh running: acl

2021-08-15 17:29:13 602

原创 CS231n学习记录

1.关于训练和推理结束!

2021-08-14 11:02:38 200

原创 Linux Block IO子系统分析总结

1.read/write/fsync与fread/fwrite/fflush的关系和区别可以用下图来表示:总结如下:read/write/fsync:Linux底层操作; 内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作。fread/fwrite/fflush:c语言标准规定的io流操作,建立在read/write/fsync之上 在用户层, 又增加了一层缓冲机制,用于减少内核调用次数,但是增加了一次内存拷贝Musl libc中的实现:

2021-08-13 21:16:26 515

原创 关于Linux内核中RTL网络模组的支持逻辑

1.问题如何发现的Ubuntu内核编译升级时,发现了提示Missing rtl8125a-3.fw,凭感觉者应该是一个运行于模组的固件,这也是当前模组的通用做法,比如XR819/XR829等等。2.查找3.定位:4.追查上面就是模组固件的整个的装载过程分析。结束!...

2021-08-13 18:02:42 339

原创 分析几类浏览器中的渲染引擎技术

1.dillo浏览器中的渲染引擎安装dillo1.dillo浏览器中的渲染引擎root@caozilong-Vostro-3268:/lib# apt install dillo正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包是自动安装的并且现在不需要了: libegl1-mesa libfwup1 libjpeg62 libllvm9 linux-hwe-5.4-headers-5.4.0-77 python-

2021-08-10 23:36:17 611

原创 neza-d1-buildroot试玩儿

大佬就是大佬,D1出来没多久,韦东山老师在很多时间内就高出了一套支持nezha-d1的builtroot环境,借大佬的东风,我也来体验一下非官方Tina的Linux系统在Nezha是是如何玩儿的,下面开始技术流水账,主要步骤是按照官方https://gitee.com/weidongshan/neza-d1-buildroot的操作。第一步:安装依赖环境:sudo apt-get install -y sed make binutils build-essential gcc g++ bash p

2021-08-10 14:24:29 381 1

原创 Linux内存管理Tips

1.proc文件系统中两个非常有用的节点/proc/kpagecount 描述的是struct page中 _mpagecount成员的大小./proc/kpageflags描述的是对应page的属性,注意是page->flag,不是页表pte flag.

2021-08-09 19:24:21 480

原创 申请ARM DS-5单月试用版并安装

下载链接:https://developer.arm.com/products/software-development-tools/ds-5-development-studio/streamline登陆后首先用邮箱注册账号,之后才能下载:下载:之后安装:

2021-08-08 18:36:35 2807

原创 Ubuntu18.04编译gmediarender

本文参考这里安装依赖:sudo apt-get install libupnp-dev libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-alsa下载代码:git clone https://github.com/hzeller/gmrender-resurrect

2021-08-08 13:18:00 360

原创 基于UBUNTU18.04 Framebuffer运行LittleVGL

基于SDL的LittleVGL环境搭建请参考这里这篇文章介绍通过修改上篇中的demo,将LittleVGL运行于ubuntu的framebuffer节点/dev/fb0之上:修改点:diff --git a/Makefile b/Makefileindex 59e07af..e00bd30 100644--- a/Makefile+++ b/Makefile@@ -15,7 +15,7 @@ WARNINGS ?= -Werror -Wall -Wextra \

2021-08-07 09:56:07 508

东南大学自动控制系课程件

东南大学自动控制系课程件,包含重要课程的重要内容,是您居家生活的好助手。

2010-02-08

RFID数据采集系统设计

这个资源不错哦,大家快来下吧,非常好的真的很不错哦噢噢哦哦

2009-06-20

inside the c++ object

C++经典书籍,书中详细叙述了C++内部对象模型的实现,虚函数的实现,看完此书你会有豁然开朗的感觉

2009-05-22

空空如也

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

TA关注的人

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