自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 Microsoft Edge异常

1. Microsoft Edge打不开    (1). 尝试清理:          C:\Users\Administrator(你的用户名)\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe          删除该文件夹尝试.   (2). 按组合键win+x,选择windows powershell(管理员).   ...

2018-04-10 16:43:32 2974 1

原创 GPU基本常识五

 最好8个线程或8的倍数线程,绑定为一个group.   原因是: VIP7000有2个shader, 每个shader有4个线程并发.(线程并发表示线程来回切换非常的快)                  同一时刻,一个group里有2个线程并行操作.                 假设8个线程A,B,C,D,E,F,G,H绑定为一个group,则同一时刻这个group里有2个线程并行操作. ...

2018-03-30 18:32:47 320

原创 CPU架构

CPU的根本任务:执行指令. 对计算机来说最终都是一串由“0”和 "1"组成的序列. CPU从逻辑上可以划分为3个模块,分别是控制单元、运算单元、存储单元. 这三部分由CPU内部总线连接起来.  控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存器IR、指令译码器ID和操作控制器OC等,对协调整个电脑有序                   工作极为重要. 它根据用户预先编好的程序,依次从内...

2018-03-28 19:12:14 322

原创 第一节 openvx(PC)

安装相关软件:1. 下载VivanteIDE 2.1.0软件    /buildroot/output/build/gpu/gpu_utils/VivantelIDE备注:openvx的API可在/buildroot/output/build/gpu-1.0.0/gpu_driver/driver/khronos/libOpenvx/utility/vx_utility.c2. 安装Vivante...

2018-03-28 13:52:28 3339 2

原创 GPU基本常识四

   算法,数据位宽和每个元素的位宽有很大的关系. 如果数据能够用更小的数据类型来表示,就用更小的数据类型.   eg:  以点积为例,int占4个字节, GPU一次最多只能load 128bit数据,所以一次只能处理4个. short占2个字节, GPU一次最多只能load 128bit数据.  所以一次只能处理8个数,计算量是之前的2倍. 带宽就可以节省一半.  可以理解为:计算量降为原来的1...

2018-03-26 15:22:24 381

原创 GPU基本常识三

编译器会把VIP7000的程序优化好后,放在DDR位置.写GPU程序,只需要写一个线程,代码量很小.GPU的运行,同一时间运行的是相同的代码.编译器把优化好后的程序,放在DDR位置后,驱动会自动调度.  当前时间点,运行kernel这条代码,它就会把程序加载到cache里面,cache足够存放下. 由于只处理一个线程,代码不会太大,运行的时候,功能单元直接从cache里面取就好了.多kernel的...

2018-03-26 11:43:03 495

原创 GPU基本常识二

DSP、CUDA、VIP7000VIP7000:shader core是2个,每个shader core有4个寄存器文件,每个寄存器文件有128个寄存器,每个寄存器有128bit(一条指令可以处理128bit数据).                  线程切换0开销.                 一条指令执行完毕后,可以立刻拿到结果,没有数据延迟CUDA:shader core数量多,但寄存器...

2018-03-23 18:52:54 683

原创 GPU基本常识一

GPU: Graphic Processing Unit 图形处理器Shader: GPU执行的,针对3D对象进行操作的程序.以VIP7000为例:Shader: 1个shader是128位的处理单元. VIP7000的gpu有2个shader, 所以有2个core, 所以一个周期可以处理2条指令.VIP上有2套指令集,shader指令集和针对vision的指令集.program cache: 外...

2018-03-23 17:11:26 2107 1

原创 eclipse(arm)编译helloworld/openvx

以下是公司同事整理的,非本人原创

2018-03-22 14:51:48 456

原创 arm板中编译opencv3.1.0

参考 自己的 印象笔记 相关文档即可.此图片是公司同事整理出来的,感谢此同事.

2018-03-22 13:45:39 248

原创 Ubuntu联网

现状: (1). 笔记本是通过wifi联网 (2). 笔记本与虚拟机的IP在同一网段 (3). 查看虚拟机名Ubuntu右键设置, 得到如下界面 选用”桥接模式”即可针对以上情况,可使用如下方式让Ubuntu联网. 1. 2. 3. 保存即可上网

2018-03-20 10:41:53 2831

原创 eclipse(arm)环境搭建

第一部分是自己写的,未写完。 第二部分借用公司同事的. 第一部分: 第一步: 下载安装eclipse-linux(luna版) (1). 下载eclipse-cpp-luna-SR2-linux-gtk.tar.gz (2). 一般软件方面放在/opt目录下, 把eclipse-cpp-luna-SR2-linux-gtk.tar.gz解压到/opt/eclipse下. (3). 在Ub...

2018-03-20 10:22:11 1870

原创 ubuntu常规文件放置路径

ubuntu常规软件: computer: /home/optubuntu应用程序: computer: /homearm板程序: 共享文件target/mnt

2018-03-16 16:55:02 2198

原创 ubuntu环境变量设置

比如: 里面的/home/abedg/buildroot/output/host/bin/arm-linux-g++, 我不希望直接用arm-linux-g++来代替,那该怎么办呢?此时将需要添加环境变量. 添加环境变量有好几种方法,这里讲的是一劳永逸的做法. (1). ubuntu终端输入 sudo gedit /etc/profile 然后输入ubuntu密码 (

2018-03-16 16:50:37 237

原创 arm板上简单运行main.cpp

在arm板上简单运行main.cpp(hello world)有2种方法: (1). 使用build.sh编译链接 (2). 直接使用命令行进行编译链接 (3). 使用makefile编译链接linux和arm共享文件: 之前通过rootpath配过一般把程序放在mnt路径下 /home/abedg/NfsRoot/target/mnt方法一: 使用build.sh编译链接...

2018-03-16 15:45:15 1322

原创 第六节: 烧写文件系统target

文件系统rootfs: 可通过TFTP网络烧写 或 可通过NFS网络挂载文件系统以下讲的是通过NFS网络挂载文件系统.备注: NFS网络挂载文件系统,首先是先把uboot.bin文件通过jlink或串口的方式烧写到开发板上,能够成功运行uboot程序并且能够进入命令模式,可以配置参数等必要条件,才可以网络挂载rootfs文件系统.(1)...

2018-03-15 14:36:39 364

原创 第五节: 分区烧写images

flash 相当于PC机的硬盘 ARM: 只要涉及到arm系统,都需要uboot(bios)、内核zimage、文件系统rootfs. uboot: 相当于PC的BIOS,启动前的准备工作. zImage: 内核(arm操作系统最核心的部分),操作的是硬件,提供的是API接口. rootfs: 文件系统(实现以文件的方

2018-03-14 10:48:43 707

原创 第四节: Buildroot目录结构

buildroot/output: 是编译出来的输出文件夹. output/build: 存放解压后的各种软件包编译完成后的现场. output/host: 存放着制作好的编译工具链,如gcc、arm-linux-gcc等工具. output/images: 存放着编译好的uboot.bin, zImage, rootfs等镜像文件,可烧写到板子里, 让linux系统跑起来. output...

2018-03-13 14:22:45 1957

原创 第三节:Buildroot构建流程框架

Makefile之后在Output/image

2018-03-12 20:36:56 847

原创 第二节: Buildroot工作原理

Buildroot概述Buildroot是一个可以自动生成一个完整linux嵌入式系统和交叉编译工具链的工具. Buildroot可以为你的目标生成一个交叉编译工具链、一个根文件系统、一个Linux内核镜像、一个bootloader镜像.Buildroot工作原理Buildroot,执行make命令,即可生成板载上的image,uboot,kernel,rootfs系统.pa...

2018-03-12 20:33:06 773

原创 第一节:搭建嵌入式环境和简单编译buildroot

第一步:新建一个虚拟机 1. 下载ubuntu的iso镜像文件 http://ftp.sjtu.edu.cn/ubuntu-cd/16.04.4/ 64位: ubuntu-16.04.4-desktop-amd64.iso 32位: ubuntu-16.04.4-desktop-i386.iso 最好选用32位的 2. 安装方式 http://...

2018-03-09 14:02:10 3809

原创 31. 运算符重载---原型(未完成)

运算符重载—原型 if it is read-only pass it in as a const reference(except built-ins) make member functions const that don’t change the calss(boolean operators,+,-,etc) for global functions, if the left-ha...

2018-01-25 20:13:36 237

原创 30.运算符重载---基本规则

运算符: + - * / * % & | = += -= *= /= %= ^= &= |= ……… 运算符重载:把运算符的运算,把你写的一个函数去表达出来。故要为写的重载符 operat

2018-01-15 20:03:36 149

原创 29. 静态成员(成员变量和成员函数)

C语言中static功能: 隐藏/持久存储(函数之间存储的东西) C语言中:全局变量、malloc 属于 持久存储的(函数之间都在的)类的成员是static (1). 隐藏功能 用private来控制C语言中的隐藏功能. (2). 持久存储 C语言:全局变量、malloc属于持久存储(函数之间存储的东西) C++语言: 2.1.何为C++的持久存储? 答: 第一种

2018-01-11 19:53:21 96

原创 28. 静态对象

C语言: 全局变量、本地变量 static: 持久存储(在哪里) 访问受局限(谁能看到你)static本地变量就是全局变量全局变量static: 只在这个.c文件里有效 本地变量static: 这个本地变量具有持久存储, 无论是否离开,本地变量都是保存着这个值的.(其实static本地变量就是全局变量) 函数static: 这个函数只能在.c文件里被访问,.c

2018-01-09 20:18:34 147

转载 机器学习入门好文

http://blog.csdn.net/lwbeyond/article/details/70177657

2018-01-04 22:10:31 162

原创 27.拷贝构造-II

class Person { public: Person(const char *s); ~Person(); void print(); private: char *name; }; //没有写自己的拷贝构造函数 //编译器自己给的拷贝构造,新的对象指针和老的对象指针是相同的.#ifndef _PERSO

2018-01-04 21:26:45 128

原创 26.拷贝构造I

//: C11: HowMany.cpp#include <iostream>#include <string>using namespace std;static int objectCount = 0;class HowMany{ public: HowMany() { objectCount++; print("HowMany()"); } void print(c

2018-01-03 19:29:12 123

原创 25. 引用再研究

//类的成员变量若是引用,必须这么写.class X{ public: int& m_y; X(int& a);};X::X(int& a):m_y(a) {}//函数返回一个引用,不能返回一个本地变量//eg:这个程序返回的是全局变量#include <assert.h>const int SIZE = 32;double myarray[SIZE];doub

2018-01-02 19:58:09 121

原创 24. 多态的实现(虚函数)

任何一个类,如果有虚函数, 这个类的对象比正常的就会大一点.#include <iostream>using namespace std;class A{ public: int i; A():i(10) {} virtual void f() { cout << "A::f()" << i << endl; }};int main(){ A a;

2017-12-21 20:56:54 144

原创 23. 多态性(虚函数)

画三种图:Circle(圆形)、 Rectangle(矩形)、 Ellipse(椭圆形) 共同的操作:render、move、resize 共同的数据:center shape是父类, Rectangle是shape的子类, Square是Rectangle的子类 Ellipse是shape的子类, Circle是Ellipse的子类. 每个子类的render()和shape的ren

2017-12-21 20:04:43 167

原创 22. 向上造型

B 父类 D 子类一个D的对象,可以交给B的变量. 一个D的指针,可以交给B的指针. 一个D的reference, 可以交给B的reference.如果B是A的子类,那么B的对象可以被当做A的对象来看待/使用.#include using namespace std;class A{ public: int i; public: A():i(10) {

2017-12-19 22:15:29 189

原创 21. 引用

C++复杂的原因:提供了太多的内存模型.太多可以放对象的地方(堆、堆栈、全局数据区里面)提供了太多访问对象的方式 (变量里面放对象,通过指针访问一个对象,通过引用去访问一个对象)以上有九种组合.char c; char* p = &c; char& r = c; //引用 初始化 //引用:一般的时候需要定义的时候给这个初始化. r是c的引用(别名). 初始值必须是一个变量或可以做左

2017-12-16 21:47:32 162

原创 20. 不可修改的对象

建议: 传对象,需要花费堆栈。 传地址,担心别人修改指针多指向的内容. 1. 传参数 void f(const int *x); 2. const Currency the_raise(42,38); //对象Currency里面的值是不能被修改的. 这样肯定是不行的,建议成员函数加const 相当于this 是constclass Data {}int Data::get_day()

2017-12-16 18:22:26 160

原创 19. const

const: 初始化以后不能被赋值再修改.const int x = 123;x = 27; //wrongx++; //wrongint y = x; //okconst int z = x; //okconst对C++来说,仍然是变量而不是常数. 变量在内存中会分配地址. 常数编译器在编译过程中记载它的自己内存表里的一个值.const int bufsize = 1024; //b

2017-12-16 18:21:12 128

原创 18. 内联函数

调用函数,需要有额外开销的.int f(int i){ return i*2;}main(){ int a = 2; int b = f(a); return 0;}汇编语言:_f_int: add ax,@sp[-8],@sp[-8] ret_main: add sp,#8 //sp寄存器(堆栈指针) #8立即数 程序运行过程中,每个程序有独立的堆栈

2017-12-16 09:53:13 190

原创 17. 函数重载和默认参数

函数重载: 函数名相同,但函数参数类型不同个数不同. 编译器选择不同的函数. 但若返回类型不同,参数相同,编译器无法区分,就不是函数重载.Default arguments: 预先给参数里写一个值. eg: Stash(int size, int initQuantity = 0);// 函数原型里int harpo(int n, int m = 4, int j = 5);int c

2017-12-15 21:59:25 261

原创 16. 子类父类关系

class Employee{ public: Employee(const std::string& name, const std::string& ssn); const std::string& get_name() const; void print(std::ostream& out) const; void print(std::ostream&

2017-12-15 21:39:12 183

原创 15. 继承

代码重用: 组合、继承组合:拿已有的对象拼接出新的对象. (实的)继承: 拿已有的类进行改造,得到新的类.(虚的)Person: 父类 Student: 子类传统做法:老类放在上面,新的类放在下面.

2017-12-15 19:36:28 121

原创 14. 对象组合

OOP特性:封装、继承和多态性. 继承:代码的重用. 代码重用:继承/组合组合: 用已有的对象组合出新的对象. eg: 有了engine对象,有了tyre对象,则可以组合成car对象. 用对象制造对象. class Person {...};class Currency {...};class SavingsAccount{ public: Savin

2017-12-14 21:42:04 143

空空如也

空空如也

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

TA关注的人

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