为BPI-M2+编译armbian

偶然的机会由TK的网址找到了这里https://github.com/igorpecovnik/lib
61.jpg
似乎是armbian的编译环境,所以决定尝试一下,母机的环境是最新的Ubuntu 16.4x64

Linux MikuQ 4.4.0-24-generic #43-Ubuntu SMP Wed Jun 8 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

根据github的指引,操作很简单

cd bpi
git clone https://github.com/igorpecovnik/lib --depth 1
cp lib/compile.sh .
./compile.sh

会自己准备编译环境,要求我输入root的密码,带有内核配置,不懂,一律默认吧,选择M2+板卡和ubuntu版本,编译过程并不快,或许和网络有关,系统提示用了80min,直接生成了需要的镜像,插入tf卡就可以烧录了

cd output/images
sudo dd if=Armbian_5.14_Bananapim2plus_Ubuntu_xenial_3.4.112.raw of=/dev/sdb bs=10MB
sudo eject /dev/sdb

很顺利,加电启动成功!全自动编译,就差自动写卡了

BPI-M3内核编译过程

首先下载最新的ubuntu 16.04 x64的安装盘http://www.ubuntu.com/download/server
ubuntu-16.04-server-amd64.iso大小为686,817,280 字节
下载VirtualBox 5.0.20虚拟机https://www.virtualbox.org/wiki/Downloads
VirtualBox-5.0.20-106931-Win.exe大小为113,110,496 字节
Oracle_VM_VirtualBox_Extension_Pack-5.0.20-106931.vbox-extpack大小为16,421,439 字节

英文系统,主机名MikuQ,用户名bpi

18.jpg

- 阅读剩余部分 -

C/C++中的指针

最近在用C语言,后来发现还要用C++做库,自然要用到称作指针的东西,以前虽然基本会用了,不过又忘了,只能重头学起了

假设a的地址是1000,也就是在1000的地方开辟一个int型的空间,放了一个数字8

int a=8;

q是一个指针,指向一个int类型,它可能存在地址2000的位置

int *q;

把a的地址写给q指针,也就是把1000存在了2000的位置,**这里用到了q是地址q里的内容8,&a是变量a的地址1000*

q=&a;

还是定义指针p,不过它是指向一个指向int地址的指针,比如指向上边q的地址2000的指针,p存在3000里

int **p;

把q指针的地址2000放到指针p里

p=&q;

- 阅读剩余部分 -

导出Excel中指定单元格的图片

想导出excel中的图片,并用某个单元格的数据命名,结果发现找不到图片的单元格,这可怎么办,发现图片是存储在单独的Shapes中的,所以只能根据图片的Top和行的Top比较判断图片在哪一行了,这里用到一个Excel的引用

using Microsoft.Office.Interop.Excel;

然后就是提取和保存代码了

string fn = @"Book1.xls";
ApplicationClass excel = new ApplicationClass();
Workbook workbook = excel.Workbooks.Add(fn);
excel.UserControl = true;
excel.Visible = false;
Worksheet sheet = workbook.Worksheets.get_Item(1) as Worksheet;
int row = 0;
Range range;
for (int i = 1; i <= sheet.Shapes.Count; i++)
{
    Shape s = sheet.Shapes.Item(i) as Shape;
    float img_top = s.Top;
    do
    {
        row++;
        range = sheet.Cells[row, 1] as Range;
    } while (img_top - 5 > (double)(range.Top));
    string f = "img_" + range.Text + ".jpg";
    Clipboard.Clear();
    s.CopyPicture(Appearance.Button, XlCopyPictureFormat.xlBitmap);
    IDataObject iData = Clipboard.GetDataObject();
    if (iData != null && iData.GetDataPresent(DataFormats.Bitmap))
    {
        System.Drawing.Image img = Clipboard.GetImage();
        if (img != null)
        {
            img.Save(@"" + f, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
}
workbook.Close(false, null, null);
excel.Quit();

参考文献:
http://blog.163.com/jiajia8166@126/blog/static/1813520201282753358819/?latestBlog
http://blog.sina.com.cn/s/blog_4c6e822d0102e2f0.html
http://www.cnblogs.com/MR_ke/archive/2010/03/08/1680576.html

温度的相关集合(CPU、SHT2X)

系统温度的工具,会除以1000,往往得到0,新的系统里似乎已经找不到这个包了

apt-get install lm-sensons

树莓派的方法,适用于M2+、M3,不适用M1、M1+,2018-3-27补充适用于M2U

cat /sys/class/thermal/thermal_zone0/temp

关于A20,宅猫给的办法,需要除1000

cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input

目前还没有找到获取M2系统温度的代码

- 阅读剩余部分 -