arch

Caffe: CMake源码编译(OpenCV4.2+CUDA)

不想你离开。 提交于 2020-02-24 08:47:40
周六周日在家倒腾了两天,总算稍微了解点pycaffe的一些接口和api设置了,但是针对不同层,还是有很多注意的细节的,所以也准备写个博客专门总结pycaffe的常见层参数设置,(LZ这个蠢啊,之前居然手写prototxt,一把辛酸泪,太傻了/(ㄒoㄒ)/~~) 之前已经写过用Anaconda直接安装caffe,这样安装caffe不香嘛, 为啥非得源码再来安装一次呢? 1.项目里后端是用的tensorflow的接口,前端是要用caffe的接口,caffe的有些参数设置还是源码查询比较方便 2.有一些层是比较特殊的,这种定制化的层可能需要使用c写完之后,再进行源码编译 不过源码编译还是有很多坑的,且听LZ一一道来: 首先下载源码, https://github.com/weiliu89/caffe 按照tutorial安装依赖项: http://caffe.berkeleyvision.org/installation.html LZ的小小笔记本是Ubuntu16.04 所以需要先安装对应的依赖库 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no

linux kernel make构建分析

对着背影说爱祢 提交于 2020-02-23 05:17:10
前言 之前对uboot的构建进行了分析,现在再对linux kernel的构建进行分析。几年前的确也分析过,但是只是停留在笔记层面,没有转为文章,这次下定决定来完善它。 环境 同样,采用的还是zynq平台的linux,从Makefile可以看到版本: VERSION = 3 PATCHLEVEL = 15 SUBLEVEL = 0 EXTRAVERSION = NAME = Shuffling Zombie Juror linux Makefile支持的选项(最常用到的) 选项V,用于开启或者关闭执行make时编译信息的打印 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' @echo ' make V=2 [targets] 2 => give reason for rebuild of target' ifeq ("$(origin V)", "command line") KBUILD_VERBOSE = $(V) endif ifndef KBUILD_VERBOSE KBUILD_VERBOSE = 0 endif 选项C,用于开启或者关闭静态代码检查 @echo ' make C=1 [targets] Check all c source with $$CHECK

三、编译第一步 make xxx_defconfig——Makefile.build 脚本

我的未来我决定 提交于 2020-02-23 05:15:48
3.1 上章分析回顾 3.1 上章分析出的参数 3.1.1 变量 MAKECMDGOALS = xxx_defconfig KBUILD_EXTMOD = version_h := include/generated/version_autogenerated.h timestamp_h := include/generated/timestamp_autogenerated.h no-dot-config-targets := clean clobber mrproper distclean help %docs check% coccicheck ubootversion backup tests config-targets := 1 mixed-targets := 0 dot-config := 1 KBUILD_SRC = build := -f ./scripts/Makefile.build obj 3.1.2 环境变量 KBUILD_DEFCONFIG := sandbox_defconfig KBUILD_KCONFIG = 3.1.3 需要进行分析的地方 (1)scripts_basic 目标执行的命令   make -f ./scripts/Makefile.build obj=scripts/basic (2)%config 目标执行的命令   make

linux4.10.8 内核移植(一)---环境搭建及适配单板。

ぃ、小莉子 提交于 2020-02-20 06:11:50
一、环境搭建   源码包下载:git clone https://www.kernel.org/pub/linux/kernel/v4.x/ linux-4.10.8.tar.gz   或者直接去kernel.org上面进行下载。   交叉编译工具链制作:   这个已经在u-boot移植中已经做过了:http://www.cnblogs.com/kele-dad/p/6910040.html 二、内核启动过程 2.1 Windows 和 Linux 系统的启动区别      由bootloader确定启动哪块单板。 2.2 修改makefile   下面的行注释掉:      修改ARCH:      修改交叉编译工具链:    2.3 选择默认配置   找到默认配置:         进入arm架构中:      可以看到我们的架构中有 mini2440的架构,同时也有s3c2410的配置文件。   进入内核根目录,配置成2410:      打开.config 文件      查看CPU,可以看到有2440的CPU:      同时也支持 mini2440 的单板:    2.4 编译   执行:make uImage   进行编译:      编译提示错误,那是因为没有安装u-boot 依赖包。      提示要安装新包      再执行编译:      编译成功。 2.5

数据库中的几个概念 - LGWR, ARCH,ASYNC,SYNC,AFFIRM

折月煮酒 提交于 2020-02-13 11:40:13
双机热备(双机容错)就是对于重要的服务,使用两台服务器,互相 备份 ,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务 双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。但在实际应用中,可能会出现多台服务器的情况,即服务器集群 双机热备一般情况下需要有共享的存储设备。但某些情况下也可以使用两台独立的服务器 实现双机热备,需要通过专业的集群 软件 或双机软件 从狭义上讲,双机热备特指基于active/standby方式的服务器热备。服务器数据包括 数据库 数据同时往两台或多台服务器写,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过双机软件的诊测(一般是通过心跳诊断)将 standby 机器激活,保证应用在短时间内完全恢复正常使用. 所以,像VCS (VERITAS Cluster Manager)等软件实现的 Oracle Cluster Server 以及Oracle Standby ,Oracle RAC (Real Application Cluster),高级复制(Advanced Replication), Streams等技术都能认为是双机热备。 二.Physical Standby,Logical

Socket与系统调用深度分析

陌路散爱 提交于 2020-02-13 02:21:11
系统linux-5.0.1 32位 为加快大家查看源码的调用关系 提供 https://elixir.bootlin.com/linux/v5.0.1/source/net/ipv4/tcp_ipv4.c#L202 以下调试都是基于下图的理解进行的,针对图中1,2两个点,博文主要解决四个问题 1 int 0x80中断向量是如何与中断向量表绑定的? 2 socketAPI是如何进入内核调用socket 接口的? 3 socket接口是如何与传输层协议绑定的? 4 sokcet接口是如何调用具体协议的 Linux 引导过程综述 BIOS->Bootloader->内核初始化:体系结构相关部分-><内核初始化:体系结构无关部分> 内核初始化:体系结构相关部分 1 内核映像结构 2 初始化与保护模式 3 自解压内核 <4 startup_32(head_32.c)> startup_32(head_32.c) 1 初始化参数(设置段的值,清楚BSS,初始化栈) 2 开启分页机制 3 初始化 Eflags 4 检查处理器类型 5 载入 GDT、IDT <6 i386_start_kernel> i386_start_kernel 执行与体系结构无关部分的内核初始化 1 检查中断向量表(IDT)是否已经启动,em,IDT要被初始化第一次 <2 调用start

Arch Linux安装KDE桌面环境

半城伤御伤魂 提交于 2020-02-09 18:11:27
安装KDE 安装xorg pacman -S xorg 安装plasma桌面和kde应用包 pacman -S plasma kde-applications systemctl enable sddm 后续完善软件 声音 pacman -S alsa-utils 字体 pacman -S ttf-dejavu wqy-zenhei wqy-microhei 网络 pacman -S networkmanager net-tools systemctl enable NetworkManager systemctl enable dhcpcd 中文输入法 pacman -S fcitx fcitx-im fcitx-rime kcm-fcitx vim /home/ username /.pam_environment 内容: GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx 来源: CSDN 作者: 珍惜最爱的你 链接: https://blog.csdn.net/q479261154/article/details/104221095

Linux中断体系结构

旧街凉风 提交于 2020-01-28 02:17:44
1.中断处理体系结构 Linux内核将所有中断统一编号,使用一个irq_desc结构数组来描述这些中断。 数组声明在 /linux/kernel/irq/handle.c中,其中 #define NR_IRQS 128 ,定义在 /linux/include/ asm/irq.h 中 1 /* 2 * Linux has a controller-independent interrupt architecture. 3 * Every controller has a 'controller-template', that is used 4 * by the main code to do the right thing. Each driver-visible 5 * interrupt source is transparently wired to the appropriate 6 * controller. Thus drivers need not be aware of the 7 * interrupt-controller. 8 * 9 * The code is designed to be easily extended with new/different 10 * interrupt controllers, without having to do

linux 中断管理(一)

这一生的挚爱 提交于 2020-01-25 16:46:02
一、中断作用 Linux 内核需要对连接到计算机上的所有硬件设备进行管理。如果要管理这些设备,首先得和它们互相通信才行。 一般有两种方案可实现这种功能: 轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理; 中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。 使用轮询的方式会占用CPU比较多的时间,效率极低。例如:要读取一个按键有没有被按下时,一个进程需要不断地查询按键有没有被按下。这样这个任务就占用CPU大量得时间,使得CPU做了大量的无用功。使用中断提供这样的一个机制。当按键没有被按下的时候,挂起当前进程,将控制权转交给其他进程。当按键按下的时候,操作系统把当前进程设为活动的,从而允许该进程继续执行。 二、linux中断管理 linux 内核将所有的中断统一编号,使用一个 irq_desc 结构体数组描述中断。一个数组项对用一个中断(或者是一组中断,它们共用中断号)。 struct irq_desc 结构体记录了,中断的名称、中断状态,底层硬件访问接口(使能中断,屏蔽中断,清除中断),中断处理函数的入口, 通过它可以调用用户注册的中断处理函数。 1、struct irq_desc struct irq_desc 在 include\linux\irq.h 文件里面定义 struct irq_desc { irq

linux内核配置与编译

扶醉桌前 提交于 2020-01-24 13:52:29
清除临时文件、中间文件和配置文件命令: make clean //remove most generated files but keep the config make mrproper //remove all generated files + config files make distclean //mrproper + remove editor backup and patch files 配置内核命令: make config:基于文本模式的交互式配置。 make menuconfig ARCH=i386:基于文本模式的菜单型配置。//“*”编译成内核(按y)(生成镜像),“m”编译成模块(按m)(生成点o文件),“ ”为不编译(按n) 配置完成之后会在当前文件夹下生成.config文件。 Linux内核提供了一系列可供参考的内核配置文件,位于 ./arch/$cpu/configs 。 编译内核: make zImage//获取详细信息make zImage V=1 make bzImage//获取详细信息make bzImage V=1 区别:在X86平台,zImage只能用于小于512K的内核 编译好的内核文件位于 ./arch/ $ cpu/boot/ (文件名为bzImage)。 编译内核模块: make modules 安装内核模块: make