Baking-Pi OK01

September 20, 2017 发布在 project

OK01这个教程会从零开始尝试把树莓派的RCA和USB口附近的那个’ACT’LED点亮,并搭建好环境为接下来的教程做好铺垫。

准备

在实际动手之前,需要你先看完前一篇教程,并下载安装了必要的GUN工具链以及代码的模版文件OS Template

文件结构

在模版文件夹里面你会看到这样的文件目录:

build/
    (empty)
source/
    main.s
kernel.ld
LICENSE
Makefile

找个编辑器打开main.s文件,我们就可以开始写汇编代码了,树莓派使用的汇编是ARMv6,我们要写的汇编也就是ARMv6。

把下面这些代码复制粘贴进去:

.section .init
.globl _start
_start:

这些代码对树莓派没有直接的作用,它们是写给汇编器看的,汇编器是一个把我们将要写的汇编代码转换成树莓派能直接运行的机器码的程序。在汇编代码中,每一行都是一条新的命令,这里的第一行告诉汇编器和链接器把我们的代码放到哪里去,.init这里的代码会和模版文件组合,最终被放到输出代码的最前面。这一点很重要,因为我们要保证哪部分代码首先运行,如果我们不这么做的话,代码会按照字母表的顺序运行。
.section命令只是告诉了汇编器从这一点到下一个.seciton是代码的链接后的位置,而后面的两行告诉了工具链程序的入口。

第一行代码

把下面的代码拷贝粘贴进去

ldr r0,=0x20200000

在汇编代码中,计算机会简单的从上往下运行代码,每一行都是一个指令,除非遇到某些指令发生跳转。 这第一行代码告诉处理器,把0x20200000这个数字存储到r0这个寄存器里面,0x20200000显然是个十六进制的数字,那么什么是寄存器?

寄存器是处理器内部的一些用来存数据的小部件,可以理解成一个个的抽屉,有些寄存器会有一些特定的功能,在树莓派上有13个通用寄存器,每一个可以存储一个32比特的数字(从0到4,294,967,295 ),从r0一直到r12,对于这13个寄存器,做任何操作和运算都没关系,在这一行代码中,换成其他寄存器也没关系。

这行代码把0x20200000存到r0,是为了接下来的控制GPIO,而GPIO控制器的位置恰好就是0x20200000,这一点可以通过参考中的数据手册来查到。

指令

ldr reg,=val  
把val存到对应的寄存器中

设置GPIO的输出模式

mov r1,#1
lsl r1,#18
str r1,[r0,#4]

要让这个ACT LED亮起来,首先和Arduino类似的要先设置这个引脚端口为输出模式,然后再让它输出高电平。
上面的代码就能让ACTLED这个GPIO16设置为输出模式,首先我们把1存到r1,然后通过lsl指令,得到二进制的1000000000000000000,其实也可以直接把这个数存到r1,但是为了后面的操作和代码,这样写更有意义。

在GPIO控制器中,有24个字节用来设置GPIO,前4个对应前10个GPIO,第二个4个对应第二个10个,总共有54个GPIO,所以我们需要6x4总共24个字节。
在4个一组里面,每三个比特对应一个GPIO,我们操作的是16号GPIO,所以我们需要操作第二个4字节中第六个3比特,也就是上面代码中18的由来。
其中的str指令,会把r1中的值,写到地址为r0的值加上4偏移的位置

指令

mov reg, #val  
把val存到对应的reg寄存器  
mov指令比ldr快,因为mov不牵涉到内存,而ldr是从内存把数存到寄存器,但是mov只能对某些数字做操作  

lsl reg, #val  
reg寄存器的值逻辑左移val位

str reg, [dest, #val]  
把reg寄存器重的值写到地址为dest寄存器的值+val

输出高电平

mov r1,#1
lsl r1,#16
str r1,[r0,#40]

现在GPIO已经准备好被点亮了,这意味着我们要让GPIO16输出低电平,没错是低电平,板子本身设计就是这样。
上面的指令都已经见过了,为了让GPIO16输出低电平,我们得让一个第十六位是1的数写到偏移GPIO控制器40的地址位置,这样就能输出低电平了。

死循环

需要的代码都写完了,应该结束了,但是假如就那样的话,只要有供电,处理器就会持续工作,如果不给他其他的任务,树莓派就会崩溃。

loop$:
b loop$

这里的第一行不是一个命令,是一个标签,或者说名字,这意味着我们可以通过loop$这个名字来找到这一行代码,代码编译完成之后标签都没有意义了会变成地址,对于写代码的我们则是又很重大的意义,b指令的作用是下一条执行的指令跳转到后面的标签所指代的代码块,在这里就会导致树莓派一直循环直到断电。

另外GNU工具链要求代码的最后有一个空行。

编译和运行

编译非常简单,用终端进入到代码的根目录,也就是Makefile的同级目录中,运行make,没什么问题的话,就会生成一个kernel.img的文件。

安装这个系统代码之前,首先需要一个已经装好了常规的Raspbian系统的树莓派SD卡,在SD卡的目录中很容易就能找到一个kernel.img的文件,把它替换成刚刚生成的新文件,然后插上电源,就能看到这个ACTLED亮起来了。

参考

数据手册

Docker化的mssql-server

September 16, 2017 发布在 wiki

Docker是比虚拟机小的虚拟化容器技术,每个Docker镜像都有一个基本的特定的功能,比如配置好PHP环境的镜像、数据库系统。

通过Docker,不需要在实体机上安装一堆mssql或者虚拟机,相对而言更加优雅

Docker在windows上是运行在hyper-v上的,所以家庭版没有hyper-v是无法使用的,或者使用跑在virtualbox上的版本

Docker基本命令

docker ps -a    # 查看当前的所有容器
docker rm <Container ID> # 删除容器
docker start <Container ID> # 启动容器
docker stop <Container ID> # 停止容器

mssql-server

在Mac或者Windows上,需要将Docker的内存调到4GB

拉取镜像

docker pull microsoft/mssql-server-linux

运行容器镜像

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d microsoft/mssql-server-linux

修改SA密码

docker exec -it <Container ID> /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<Old Password>' -Q 'ALTER LOGIN SA WITH PASSWORD="<New Password>";'

容器内部连接数据库

docker exec -it e69e056c702d "bash"
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'

>1 CREATE DATABASE TestDB
>2 SELECT Name from sys.Databases
>3 go

>1 USE TestDB
>2 CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
>3 INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
>4 go

>1 QUIT

从容器外部连接数据库

sqlcmd -S 10.3.2.4,1401 -U SA -P '<YourPassword>'

可视化工具连接数据库

以DataGrip为例

参考

microsoft/mssql-server-linux
使用 Docker 运行 SQL Server 2017 容器映像
在 Docker 上配置 SQL Server 2017 容器映像

树莓派Zero掌机

August 24, 2017 发布在 project

使用batocera配置树莓派Zero W掌机,batocera系统与其他游戏机系统相比性能要求低,非常适合用于Zero这种低配置的板子上使用。

下载镜像

这个网站,选择针对树莓派Zero W的镜像下载,Windows用Win32DIskImager直接烧写,Linux用dd命令即可。

初次配置

通过HDMI线连接电视机或者显示器,给树莓派正常供电,系统会自动分配空间,自动配置完,然后强制关机直接切断电源就行。

配置分辨率

考虑到我们需要用小屏幕来作为掌机的显示,系统不会默认就直接适配屏幕,以我的这个5寸屏幕为例,需要修改一些配置文件,这个步骤需要Linux系统或者虚拟机。

首先需要修改/RECALBOX目录下的config.txt

将下面这段加到里面去(可能需要sudo命令行)。

framebuffer_width=800
framebuffer_height=480
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt  800  480  60  6  0  0  0
device_tree=bcm2710-rpi-3-b.dtb
dtparam=spi=on

/SHARE/system/recalbox.conf中的两处CEA 4 HDMI改成DMT 87 HDMI

使用其他屏幕的时候用类似的操作就行了,配置成功之后应该可以使batocera的主屏幕和游戏界面都完全适配使用的硬件屏幕。

设置GPIO控制

修改/SHARE/system/recalbox.conf中的两行配置

controllers.gpio.enabled=1  
controllers.gpio.args=map=1,2 => controllers.gpio.args=map=1

重启之后就可以尝试用下面这张图的相关引脚了,默认是上拉的引脚,所以只要把引脚比如27号连一下GND,看他会不会有左滑的效果,如果有效果的话,就是说软件上配置成功了,硬件上还需要做一些事情,需要焊一块小型的掌机来操作才行。

总体思路就是在一块洞洞板上焊接需要数量的微动开关,然后

使用游戏机

正式玩游戏之前需要一些其他额外的配置,

Ubuntu录制视频并做成gif

August 21, 2017 发布在 wiki

安装需要的软件

sudo apt-get install kazam
sudo apt-get install  mplayer
sudo apt-get install imagemagick

录制

通过Win键呼出Dash页面选择kazam,用GUI的方式开始录制,可以选定区域录制mp4

视频转换成图片

mkdir jpgdir
mplayer -ao null tabs.mp4 -vo jpeg:outdir=./jpgdir

合成gif

convert ./jpgdir/*.jpg view.gif

缩小gif大小

convert out.gif -fuzz 10% -layers Optimize optimized.gif

DietPi——树莓派上的轻量级系统

August 15, 2017 发布在 wiki

随着树莓派的逐步发展,官方的Raspbian系统在一步步完善和开发,软件和资源越来越多,往往也意味着慢慢地臃肿。 而DietPi就是在这样的背景下被开发出来,在DietPi系统中,默认只有一些必要的软件,其他的任何不需要的软件在初始化的DietPi上面都是不存在的;在干净和简洁的同时,在DietPi上安装需要的软件也比其他软件方便和简单。

安装配置DietPi

初次配置时需要网络连接

下载镜像

在官网的下载页面下载对应的板子的镜像。

解压并烧写

  • 在Windows上可以使用Win32DiskImager
  • 在Linux上可以用dd命令
dd if=/path/to/DietPi_vXX.img of=/dev/sdb

配置WiFi(可选)

将烧写好的SD卡插入电脑,和Raspbian类似,DietPi上有一个文件dietpi.txt也是用来做开机时的配置。

在这个文件里面设置好

Wifi_Enabled=1
Wifi_SSID=MySSID
Wifi_KEY=MyWifiKey

给板子上电

把SD卡插入板子,然后上电,之后DietPi会自动重启两次来完成初次的配置。

登录

默认的用户名是root,密码是dietpi
假如上面的WiFi配置成功了,那么这里也能直接ssh了,DietPi默认装了Dropbear SSH Server。

DietPi默认是没有桌面环境的,所以这个时候还是只能终端操作。

选择软件安装

接下来就可以选择你需要的软件来进行个性化的安装了,可以安装的软件包括以下这么多选择:

桌面

  • LXDE - 高度优化的轻量级桌面
  • MATE - Gnome 2桌面
  • XFCE - 轻量级桌面
  • GnuStep - 另类的桌面系统
  • Chromium - 浏览器

远程桌面

  • Tightvnc Server - 远程桌面软件
  • VNC4 Server - 远程桌面软件
  • NoMachine - 功能更丰富的远程桌面软件
  • XRDP - 针对Windows客户端的远程桌面软件
  • RealVNC Server - 远程桌面软件

媒体系统

  • Kodi - Media Centre / Player
  • YMPD - Lightweight web Interface audio player for MPD
  • O!MPD - Feature-rich web Interface audio player for MPD
  • CAVA - Optional: Console-based audio visualizer for MPD
  • Mopidy - Web Interface Music /Radio Player
  • SubSonic - Feature rich media streaming server with web interface.
  • SqueezeBox - Also known as Logitech Media Server.
  • SqueezeLite - Audio player for SqueezeBox.
  • Shairport Sync - AirPlay audio player with multiroom sync
  • BruteFIR - EQ and Digital Room Correction via ALSA.
  • ReadyMedia - (MiniDLNA) Media streaming server (DLNA, UPnP)
  • Ampache - Web interface media streaming server.
  • Emby - Web interface media streaming server.
  • Plex Media Server - Web interface media streaming server.
  • PlexPy - Monitoring and tracking tool for Plex Media Server.
  • Murmur - Mumble VoIP Server
  • Roon Bridge - Turns your device into a Roon capable audio player
  • Roon Server - Turns your device into a Roon capable audio player and Roon core
  • NAA Daemon - Signalyst Network Audio Adaptor (NAA).
  • IceCast - Shoutcast Streaming Server, including DarkIce.
  • jRiver - Media Center
  • Koel - Web interface streaming server.

BT/下载

  • Transmission - Lightweight BitTorrent server with web interface
  • Deluge - Alternative BitTorrent server with web interface
  • qBitTorrent - Lightweight and fast (c++) BitTorrent server with web interface
  • rTorrent - BitTorrent server with ruTorrent web interface
  • Aria2 - Download manager with web interface
  • SABnzbd - NZB download manager with web interface.
  • SickRage - Automatically download TV shows
  • Sonarr - Automatically download TV shows
  • Radarr - Automatically download Movies
  • CouchPotato - Automatically download movies.
  • Jackett - API Support for your favorite torrent trackers.
  • NZBget - NZB download manager with web interface.
  • HTPC Manager - combines all your favorite software into one slick interface.

模拟器和游戏客户端

  • OpenTyrian - Gaming
  • Cuberite - Fast Minecraft server with web interface
  • MineOS - Multiple Minecraft servers with web interface
  • AmiBerry - Amiga emulation system, further developed optimized builds of uae4arm-rpi
  • DXX-Rebirth - Descent 1 & 2 OpenGL port
  • Steam - Steam client

相机

  • DietPi-Cam - RPi Camera / Web Interface Surveillance
  • MotionEye - Camera / Web Interface Surveillance

云/备份

  • OwnCloud - Your own personal cloud based backup/data storage system
  • NextCloud - Your own personal cloud based backup/data storage system
  • Pydio - Feature-rich backup and sync server with web interface.
  • UrBackup Server - Full backups for systems on your network
  • Gogs - GitHub style server, with web interface.
  • Syncthing - Backup and sync server with web interface.
  • Tonido - Lightweight backup and sync server with web interface, and, cloud access.

社交/搜索

  • Forums - phpbb3
  • Wordpress - Website Blog and Publishing platform.
  • Image Gallery - Host and browse your images from a web interface.
  • BaiKal - Lightweight CalDAV + CardDAV server.
  • OpenBazaar - Decentralized peer to peer market server using BitCoin.
  • YaCy - Decentralized open source search engine.

WiFi/热点

  • WiFi HotSpot - Turn your device into a wireless hotspot/access point.
  • Tor HotSpot - Optional: Routes all WiFi HotSpot traffic through the Tor network.

智能家居

  • EmonPi - Lightweight Energy usage stats with EmonPi PCB.
  • Grasshopper - Web App to control Bticino MyHome

硬件项目

  • RPi.GPIO - GPIO Interface library for RPi (python).
  • WiringPi - GPIO Interface library (c).
  • WebIOPi - Web interface to control RPi GPIO.
  • I2c - Enables support for I2c based hardware.
  • Node-Red - Visual tool for wiring together hardware devices, APIs and online services.
  • Mosquitto - Message broker that implements MQTT protocol versions 3.1 and 3.1.1.
  • Blynk Server - iOs and Android apps to control Arduino, ESP8266, Raspberry Pi and similar microcontroller boards over the Internet.

远程访问

  • Remot3.it - (Weaved) Access your device over the internet.
  • VirtualHere - Share physically attached USB devices from your SBC, over the network.

系统管理和监控

  • DietPi-Cloudshell - Lightweight system stats for your LCD display or monitor.
  • Raspcontrol - Web interface system stats
  • Linux Dash - Web interface system stats
  • PhpSysInfo - Web interface system stats
  • RPi Monitor - Web interface system stats
  • NetData - Web interface system stats
  • Webmin - Remote system management with web interface
  • Open Media Vault - Web interface network attached storage (NAS) solution

系统安全

  • Fail2Ban - Protects your system from brute-force attacks

Web服务器栈

  • LAMP Webserver - Apache2 / MySql / PHP
  • LASP Webserver - Apache2 / SQLite / PHP
  • LAAP Webserver - Apache2 / MariaDB / PHP
  • LEMP Webserver - Nginx / MySql / PHP
  • LESP Webserver - Nginx / SQLite / PHP
  • LEAP Webserver - Nginx / MariaDB / PHP
  • LLMP Webserver - Lighttpd / MySql / PHP
  • LLSP Webserver - Lighttpd / SQLite / PHP
  • LLAP Webserver - Lighttpd / MariaDB/ PHP
  • phpMyAdmin - Web interface SQL admin tool
  • Certbot - Free, automated SSL cert creation and setup, allowing https.
  • Tomcat8 - Apache Tomcat server

DNS 服务器

  • Pi-hole - A DNS/Web server that will block ads for any device on your network.

文件服务器

  • ProFTP - Simple, efficient, lightweight FTP file server.
  • Samba - Feature rich file server.
  • vsFTPD - Feature rich FTP file server.
  • NFS - Network file system server

VPN 服务器

  • OpenVPN - Easy to use, minimal hassle VPN server
  • PiVPN - OpenVPN installer & management tool

网络负载均衡

  • HaProxy - High performance TCP/HTTP load balancer.

网站域名

  • NoIp - Website URL Address

打印

  • CloudPrint - CUPS print server, with support for Google cloud printing
  • OctoPrint - Web interface for controlling 3D printers

文件服务器选择

  • ProFTP - Simple, efficient, lightweight file server.
  • Samba - Feature rich file server.

SSH选择

  • Dropbear - Lightweight SSH Server
  • OpenSSH - Feature rich SSH server with SFTP/SCP support.

日志系统选择

  • DietPi-Ramlog - Lightweight RAM logging.
  • Full - Full logging system with Rsyslog and Logrotate.

网络服务器选择

  • Apache2 - Feature-rich webserver
  • Nginx - Lightweight webserver
  • Lighttpd - Extremely lightweight webserver

预装软件:

  • dietpi-launcher (Select and Run any of the DietPi programs, all from one place.)
  • dietpi-config (Feature rich configuration tool for your device)
  • dietpi-software (Install optimized and ready to run software)
  • dietpi-uninstall (Allows you to uninstall DietPi software)
  • dietpi-update (Update your version of DietPi)
  • dietpi-backup -(Backup or restore your DietPi system)
  • dietpi-sync - (Allows you to sync/duplicate one directory to another).
  • dietpi-services - (Takes control of software services, enabling DietPi a method of quick service control).
  • dietpi-process_tool - (Tweak system wide nice/priority levels, for most software and processes).
  • dietpi-cleaner (Remove unwanted “junk” from your DietPi system and free up filesystem space)
  • dietpi-bugreport (Sends a bug report to DietPi)
  • dietpi-cron (Allows you to modify all start times for Cron Jobs)
  • dietpi-logclear (Keep ontop of your log files, features clearing and backup modes).
  • dietpi-morsecode (Converts a text file to morse code, then outputs to your screen)
  • dietpi-letsencrypt (Frontend for Lets Encrypt and DietPi integration)
  • htop (The only resource monitor you’ll ever need)
  • DietPi-Ramlog #1 (Mounts /var/log to RAM. Saves your SD card writes, and, uses less than 0.1mb~ of RAM).
  • Dropbear (Lightweight SSH server)

预装脚本

  • treesize (Shows current directory/file sizes, recursive)
最近更新
归档
标签

Theme from Tipo