Yym Blog

keep it Simple and Stupid

风格迁移综述和实践

Neural Style Transfer

风格迁移是将一幅图片以特定风格重新绘制的过程。Gatys 等人的工作开创性地利用卷积神经网络将图片的内容和风格分离出来,从而可以生成很理想的风格化图片。这项工作引起了风格迁移在学术研究和工业应用的热潮,在原始方法的基础上,研究者又提出了很多改进和拓展的方法。本文对风格迁移的技术进展进行了综述,并实现了几种流行的风格迁移方法,对它们的效果进行了比较和分析。 近些年来,风格迁移算法成为计算机视...

PolarDB 数据库性能大赛-比赛攻略

背景分析 赛题概述 赛题:https://code.aliyun.com/polar_race2018/competition_rules 比赛要求实现一个简化、高效的基于 SSD 的 kv 存储引擎,支持 Write、Read、Range 接口。 RetCode Write(const PolarString &key, const PolarString &val...

闪存文件系统 F2FS

File System for Flash Storage

基于 NAND 的闪存设备被广泛地用在各种设备中,闪存具有先擦后写固有的限制,并且擦写寿命是有限的。通常将多个闪存芯片连接到一个控制器,这个控制器解决了闪存芯片的限制,提供了与传统块设备相同的外部接口。eMMC 和 SSD 等大多数闪存设备都采用了这种方案,与传统的磁盘相比,闪存设备没有机械装置,因此具有更低的访问延迟、更低的能耗、低噪声、抗摔等优点。 然而,在某些特殊的使用环境下,闪存芯...

Flash 存储与 SSD

闪存的性质 基于 NAND 的闪存 基于 NAND 的闪存是一种非易失性的 EEPROM 存储设备,闪存芯片的最小读写单元是页(page,通常 4KB),多个连续的页组成了块(block),闪存的擦除操作按块进行。图 1-a 给出了一个闪存芯片结构的示意图,其中每个块包含 128 个 4 KB 的页。 闪存与传统存储介质有以下几点差异:(1)读和写具有不同的延迟,写的代价高了一个数...

Socket Programming

控制 MAX7219 前一次实验已经为 MAX7219 写好了设备驱动,只需要向 /dev/MAX7219 中写入字符即可在 LED 上显示。 这一次要在程序中写入这个设备文件,需要注意的是,C 语言的文件函数是具有缓冲区的,因此写入文件的内容无法实时地写入,因此在每次写入后要强制清空缓冲区: int fflush( FILE *stream ); 这个函数的作用是,将 strea...

GPIO, Physical Computing

添加字符设备驱动程序

GPIO GPIO 引脚是树莓派与外部世界之间的物理接口,树莓派可以通过这些引脚连接外部电路来控制和监视外部世界,我们称之为物理计算。在 Pi3 上有 40 个 GPIO 的引脚,它们提供不同的功能,在树莓派网站有详细的介绍。 对于 GPIO 的控制和访问,树莓派平台有丰富的库函数提供支持,Wiring Pi 和 RPi.GPIO 等都提供了很好的封装,同时 Linux 内核中也包含了 ...

Kernel Building and System Call

树莓派添加系统调用

重建内核 采用交叉编译的方式编译内核能获得很好的效率,但是需要更多的配置。由于没有安装交叉编译器,又考虑到树莓派 3 的处理器性能还不错,所以选择了在本机进行编译。 树莓派的官网提供了关于内核的参考文档,下面简要叙述一下内核编译的过程。 下载源码 各版本的内核源码提供在 Github 上,可以选定版本下载,将源码下载到本地: git clone --depth=1 https://...

μC/OS-II 实时操作系统

移植 μC/OS-II 下载源码 下载 μC/OS-II 源码,要注册账号和邮箱验证,下载后点击 .exe 文件进行解压。 新建工程 由于 μC/OS 需要标准库的支持,所以不再使用 Cube 库,而是直接建立 Keil 工程。 在 Keil 中新建工程,选择开发板信号 STM32F103XX,然后选择需要的环境,勾选 CMSIS->CORE、Device->Start...

树莓派3代 配置启动

The Raspberry Pi 3 is the third generation Raspberry Pi. It replaced the Raspberry Pi 2 Model B in February 2016.

树莓派在今年二月份推出了第三代版本,具体型号为 Raspberry Pi 3, Model B, 1GB RAM 包装盒中只有本体和一份简要说明,需要自备 micro-SD 卡和 micro-USB 电源线,官方说法是最好使用 5V/2.5A的电源输入,实测 1A 的电流输出也可以正常运行,但是在外设增加后可能会造成影响。 相比第二代,外观几乎没有变化。硬件上,Pi 3 新增: ...

Bootloader

实现简易功能的 Bootloader

实现一个简易的bootloader,能通过串口执行两条最简单的指令: peek addr: 以一个字为单位读取内存中 addr 位置的数据,并以十六进制的形式输出 poke addr data: 以一个字为单位修改内存中 addr 位置的数据为 data 串口中断 串口发送在上一个工程已经实现,而串口接收需要设置串口中断。同样利用 CubeMX 可以方便地完成串口中断的设置...