路径
代码语言:javascript复制framebuffer_width=960
framebuffer_height=540
记住这个参数,改分辨率的~
把系统扩展到所有SD卡
过扫描,黑边.负数都是,从-20开始
超频选项
代码语言:javascript复制import time
def factorial(n):
if n == 0:
return 1
else:
return n*factorial(n-1)
before_time = time.clock()
for i in range(1, 10000):
factorial(200)
after_time = time.clock()
print(after_time - before_time)
顺手写了一段测cpu的代码,感兴趣可以测试一下超频的效果.
录视频,以后讲
看看摄像头sudo apt install nomacs安装这个软件
改名字,就是ip的名字
如果你改了名字/etc/hosts这里也要改
与Mac互相交换文件,安装这个软件
更新服务
代码语言:javascript复制<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
</service-group>
写入这串代码,在下面的文件里面
设置成守护进程
然后就可以自由的在mac上面移动文件了~
Ctrl X,退出.在nano推出前提示用户保存wenjian
Ctrl V,下一页,光标下移,允许在一个大文件里面每次移动一个屏幕
Ctrl Y,前一页
Ctrl W查找命令
第一节是权限,文件,所有人,组,大小,修改日期,文件名
sudo apt-get remove xxxxxxx移除软件
sudo apt-get autoremove xxxxxxxx同时移除必备软件包
sudo apt-get clean 进一步进行清理
如何设置一个开机脚本
- 创建一个init.d脚本
- 将此脚本标记为可执行
- 讲此脚本注册到系统
注意,这个脚本要在/etc/init.d/中创建
做个示范,看看
代码语言:javascript复制### BEGIN INIT INFO
# Provides: my_server
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple Web Server
# Description: Simple Web Server
### END INIT INFO
#! /bin/sh
# /etc/init.d/my_server
export HOME
case "$1" in
start)
echo "Starting My Server"
sudo /usr/bin/python /home/pi/myserver.py 2>&1 &
;;
stop)
echo "Stopping My Server"
PID=`ps auxwww | grep myserver.py | head -1 | awk '{print $2}'`
kill -9 $PID
;;
*)
echo "Usage: /etc/init.d/my_server {start|stop}"
exit 1
;;
esac
exit 0
在里面创建一个my_serve.但是建议在别的地方写好,复制过来这样比较好
设置权限
然后测试了一下是不是可以用,我脚本写的可能有问题.不重要倒是,模板就是这样
先删除
这句是把脚本注册到系统服务
可能你还有定时这样的服务,用crontab命令
hsitory的命令
我可以用脚本命令来过滤输出
top监视系统
还是过滤此时所有的python进程
killall是kill的升级版
&可以让任务在后天运行
用fg 命令切回前台
alias命令
写一个
强制生效 此时.成功
df -h有空格,查看磁盘空间
安装motion
在配置文件里面把,这个都打开
写入这个
这是目录
打开服务
啊,这...
我看了下端口,这服务没有开启
头疼,,,,nano全选是啥键?????????????????
我的天,没有vim,安装一下
爷自闭了,啥啊....不会用
可视化走起
取出配置文件,翻译一下.超气的!!!!
我有空再研究~
代码语言:javascript复制 $ mkdir pifm
$ cd pifm
$ wget http://www.icrobotics.co.uk/wiki/images/c/c3/Pifm.tar.gz
$ tar -xzf Pifm.tar.gz
pifm
抱歉,,这个东西我没有插电线.手头也没有好的收音机试不了了
代码语言:javascript复制// To run:
// wget -O - http://beta.etherpad.org/p/pihackfm/export/txt 2>/dev/null | gcc -lm -std=c99 -g -xc - && ./a.out beatles.wav
// Access from ARM Running Linux
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include <math.h>
#include <fcntl.h>
#include <assert.h>
#include <malloc.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include <unistd.h>
#define PAGE_SIZE (4*1024)
#define BLOCK_SIZE (4*1024)
int mem_fd;
char *gpio_mem, *gpio_map;
char *spi0_mem, *spi0_map;
// I/O access
volatile unsigned *gpio;
volatile unsigned *allof7e;
// GPIO setup macros. Always use INP_GPIO(x) before using OUT_GPIO(x) or SET_GPIO_ALT(x,y)
#define INP_GPIO(g) *(gpio ((g)/10)) &= ~(7<<(((g))*3))
#define OUT_GPIO(g) *(gpio ((g)/10)) |= (1<<(((g))*3))
#define SET_GPIO_ALT(g,a) *(gpio (((g)/10))) |= (((a)<=3?(a) 4:(a)==4?3:2)<<(((g))*3))
#define GPIO_SET *(gpio 7) // sets bits which are 1 ignores bits which are 0
#define GPIO_CLR *(gpio 10) // clears bits which are 1 ignores bits which are 0
#define GPIO_GET *(gpio 13) // sets bits which are 1 ignores bits which are 0
#define ACCESS(base) *(volatile int*)((int)allof7e base-0x7e000000)
#define SETBIT(base, bit) ACCESS(base) |= 1<<bit
#define CLRBIT(base, bit) ACCESS(base) &= ~(1<<bit)
#define CM_GP0CTL (0x7e101070)
#define GPFSEL0 (0x7E200000)
#define CM_GP0DIV (0x7e101074)
#define CLKBASE (0x7E101000)
#define DMABASE (0x7E007000)
#define PWMBASE (0x7e20C000) /* PWM controller */
struct GPCTL {
char SRC : 4;
char ENAB : 1;
char KILL : 1;
char : 1;
char BUSY : 1;
char FLIP : 1;
char MASH : 2;
unsigned int : 13;
char PASSWD : 8;
};
void getRealMemPage(void** vAddr, void** pAddr) {
void* a = valloc(4096);
((int*)a)[0] = 1; // use page to force allocation.
mlock(a, 4096); // lock into ram.
*vAddr = a; // yay - we know the virtual address
unsigned long long frameinfo;
int fp = open("/proc/self/pagemap", 'r');
lseek(fp, ((int)a)/4096*8, SEEK_SET);
read(fp, &frameinfo, sizeof(frameinfo));
*pAddr = (void*)((int)(frameinfo*4096));
}
void freeRealMemPage(void* vAddr) {
munlock(vAddr, 4096); // unlock ram.
free(vAddr);
}
void setup_fm()
{
/* open /dev/mem */
if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) {
printf("can't open /dev/mem n");
exit (-1);
}
allof7e = (unsigned *)mmap(
NULL,
0x01000000, //len
PROT_READ|PROT_WRITE,
MAP_SHARED,
mem_fd,
0x20000000 //base
);
if ((int)allof7e==-1) exit(-1);
SETBIT(GPFSEL0 , 14);
CLRBIT(GPFSEL0 , 13);
CLRBIT(GPFSEL0 , 12);
struct GPCTL setupword = {6/*SRC*/, 1, 0, 0, 0, 1,0x5a};
ACCESS(CM_GP0CTL) = *((int*)&setupword);
}
void modulate(int m)
{
ACCESS(CM_GP0DIV) = (0x5a << 24) 0x4d72 m;
}
struct CB {
volatile unsigned int TI;
volatile unsigned int SOURCE_AD;
volatile unsigned int DEST_AD;
volatile unsigned int TXFR_LEN;
volatile unsigned int STRIDE;
volatile unsigned int NEXTCONBK;
volatile unsigned int RES1;
volatile unsigned int RES2;
};
struct DMAregs {
volatile unsigned int CS;
volatile unsigned int CONBLK_AD;
volatile unsigned int TI;
volatile unsigned int SOURCE_AD;
volatile unsigned int DEST_AD;
volatile unsigned int TXFR_LEN;
volatile unsigned int STRIDE;
volatile unsigned int NEXTCONBK;
volatile unsigned int DEBUG;
};
struct PageInfo {
void* p; // physical address
void* v; // virtual address
};
struct PageInfo constPage;
struct PageInfo instrPage;
struct PageInfo instrs[1024];
void playWav(char* filename, float samplerate)
{
int fp= STDIN_FILENO;
if(filename[0]!='-') fp = open(filename, 'r');
//int sz = lseek(fp, 0L, SEEK_END);
//lseek(fp, 0L, SEEK_SET);
//short* data = (short*)malloc(sz);
//read(fp, data, sz);
int bufPtr=0;
float datanew, dataold = 0;
short data;
for (int i=0; i<22; i )
read(fp, &data, 2); // read past header
while (read(fp, &data, 2)) {
float fmconstant = samplerate * 50.0e-6; // for pre-emphisis filter. 50us time constant
int clocksPerSample = 22500.0/samplerate*1400.0; // for timing
datanew = (float)(data)/32767;
float sample = datanew (dataold-datanew) / (1-fmconstant); // fir of 1 s tau
float dval = sample*15.0; // actual transmitted sample. 15 is bandwidth (about 75 kHz)
int intval = (int)(round(dval)); // integer component
float frac = (dval - (float)intval)/2 0.5;
unsigned int fracval = frac*clocksPerSample;
bufPtr ;
while( ACCESS(DMABASE 0x04 /* CurBlock*/) == (int)(instrs[bufPtr].p)) usleep(1000);
((struct CB*)(instrs[bufPtr].v))->SOURCE_AD = (int)constPage.p 2048 intval*4 - 4 ;
bufPtr ;
while( ACCESS(DMABASE 0x04 /* CurBlock*/) == (int)(instrs[bufPtr].p)) usleep(1000);
((struct CB*)(instrs[bufPtr].v))->TXFR_LEN = clocksPerSample-fracval;
bufPtr ;
while( ACCESS(DMABASE 0x04 /* CurBlock*/) == (int)(instrs[bufPtr].p)) usleep(1000);
((struct CB*)(instrs[bufPtr].v))->SOURCE_AD = (int)constPage.p 2048 intval*4 4;
bufPtr=(bufPtr 1) % (1024);
while( ACCESS(DMABASE 0x04 /* CurBlock*/) == (int)(instrs[bufPtr].p)) usleep(1000);
((struct CB*)(instrs[bufPtr].v))->TXFR_LEN = fracval;
dataold = datanew;
}
close(fp);
}
void unSetupDMA(){
printf("exitingn");
struct DMAregs* DMA0 = (struct DMAregs*)&(ACCESS(DMABASE));
DMA0->CS =1<<31; // reset dma controller
}
void handSig() {
exit(0);
}
void setupDMA( float centerFreq ){
atexit(unSetupDMA);
signal (SIGINT, handSig);
signal (SIGTERM, handSig);
signal (SIGHUP, handSig);
signal (SIGQUIT, handSig);
// allocate a few pages of ram
getRealMemPage(&constPage.v, &constPage.p);
int centerFreqDivider = (int)((500.0 / centerFreq) * (float)(1<<12) 0.5);
// make data page contents - it's essientially 1024 different commands for the
// DMA controller to send to the clock module at the correct time.
for (int i=0; i<1024; i )
((int*)(constPage.v))[i] = (0x5a << 24) centerFreqDivider - 512 i;
int instrCnt = 0;
while (instrCnt<1024) {
getRealMemPage(&instrPage.v, &instrPage.p);
// make copy instructions
struct CB* instr0= (struct CB*)instrPage.v;
for (int i=0; i<4096/sizeof(struct CB); i ) {
instrs[instrCnt].v = (void*)((int)instrPage.v sizeof(struct CB)*i);
instrs[instrCnt].p = (void*)((int)instrPage.p sizeof(struct CB)*i);
instr0->SOURCE_AD = (unsigned int)constPage.p 2048;
instr0->DEST_AD = PWMBASE 0x18 /* FIF1 */;
instr0->TXFR_LEN = 4;
instr0->STRIDE = 0;
//instr0->NEXTCONBK = (int)instrPage.p sizeof(struct CB)*(i 1);
instr0->TI = (1/* DREQ */<<6) | (5 /* PWM */<<16) | (1<<26/* no wide*/) ;
instr0->RES1 = 0;
instr0->RES2 = 0;
if (i%2) {
instr0->DEST_AD = CM_GP0DIV;
instr0->STRIDE = 4;
instr0->TI = (1<<26/* no wide*/) ;
}
if (instrCnt!=0) ((struct CB*)(instrs[instrCnt-1].v))->NEXTCONBK = (int)instrs[instrCnt].p;
instr0 ;
instrCnt ;
}
}
((struct CB*)(instrs[1023].v))->NEXTCONBK = (int)instrs[0].p;
// set up a clock for the PWM
ACCESS(CLKBASE 40*4 /*PWMCLK_CNTL*/) = 0x5A000026;
usleep(1000);
ACCESS(CLKBASE 41*4 /*PWMCLK_DIV*/) = 0x5A002800;
ACCESS(CLKBASE 40*4 /*PWMCLK_CNTL*/) = 0x5A000016;
usleep(1000);
// set up pwm
ACCESS(PWMBASE 0x0 /* CTRL*/) = 0;
usleep(1000);
ACCESS(PWMBASE 0x4 /* status*/) = -1; // clear errors
usleep(1000);
ACCESS(PWMBASE 0x0 /* CTRL*/) = -1; //(1<<13 /* Use fifo */) | (1<<10 /* repeat */) | (1<<9 /* serializer */) | (1<<8 /* enable ch */) ;
usleep(1000);
ACCESS(PWMBASE 0x8 /* DMAC*/) = (1<<31 /* DMA enable */) | 0x0707;
//activate dma
struct DMAregs* DMA0 = (struct DMAregs*)&(ACCESS(DMABASE));
DMA0->CS =1<<31; // reset
DMA0->CONBLK_AD=0;
DMA0->TI=0;
DMA0->CONBLK_AD = (unsigned int)(instrPage.p);
DMA0->CS =(1<<0)|(255 <<16); // enable bit = 0, clear end flag = 1, prio=19-16
}
int main(int argc, char **argv)
{
if (argc>1) {
setup_fm();
setupDMA(argc>2?atof(argv[2]):103.3);
playWav(argv[1], argc>3?atof(argv[3]):22500);
} else
fprintf(stderr, "Usage: program wavfile.wav [freq] [sample rate]nnWhere wavfile is 16 bit 22.5kHz Mono. Set wavfile to '-' to use stdin.nfreq is in Mhz (default 103.3)nsample rate of wav file in HznnPlay an empty file to transmit silencen");
return 0;
} // main
简简单单的目录,核心c代码.有空研究
这....没下载下来?