查看: 10348|回复: 9

[原创] AutoMan帮你打怪兽之RaspberryPi-IDE

[复制链接]

该用户从未签到

发表于 2017-9-26 11:10:59 | 显示全部楼层 |阅读模式
分享到:
AutoMan帮你打怪兽之RaspberryPi-IDE
版权所有,侵权必究! 未经许可,不得用于商业用途
限于篇幅,本文有不少URL引用,Sorry

image002.jpg   vs image004.jpg

原创,David Lee。 转载请注明出处,欢迎爱好者技术交流
备注:如无特殊说明,文章内容均出自David个人真实理解,没有存心妄自揣测故意愚人耳目。由于个人水平有限,虽力求内容无误,但仍难免出错,请勿见怪,如果可以请留言告之。

让我们开始吧!

树莓派(Raspberry Pi)大家都熟悉吧,同Beaglebone Black,Arduino一起被称为3大开源硬件。笔者对比过这三个平台,觉得树莓Pi是最适合单片机工程师学习Linux的SBC,树莓派玩熟了剩下的两个平台也很容易融入。另外大家应该知道,树莓派是当前全球第三大计算机平台(另外两个Windows-PC & MacOS-PC不用我介绍了吧),树莓派现在硬件可以定制(http://www.embest-tech.cn/),完全可以用于产品开发!它不仅是创客玩具!

image006.jpg

Cpu core: BCM2708/BCM2709/BCM2710        
Cpu packages: BCM2835/BCM2836/BCM2837

如今Linux计算机体系从硬件到软件都很复杂,覆盖电路设计,底层内核与驱动设计,应用软件设计,系统运维多个方面,我们精力有限,无法逐一精通。像我,单片机起家的就选择专注于Linux应用软件设计(吐槽:我觉得做内核做驱动是纯技术活,枯燥,不够Business, 再说做单片机对硬件,驱动,RTOS都折腾过了,兴趣不大。但是我特别尊重那些做纯技术活的NB人,他们是灵魂工作者,保持了自我,毕竟社会太浮躁了…

扯远了,难怪老婆说我啰嗦,言归正传!

首先需要一块树莓板,我用了Model B+, Arm11的老内核,不过都一样,Linux玩的是软件,
以下请准备:

image008.jpg

1:FT232 USB转串口模块
image010.jpg
2:RT2870/RT3070 Wireless Adapter USB无线网卡,兼容卡也行
3:8G class10 SD卡 + USB读卡器
4:5V,2A电源
5:RJ45网线 + USB有线网卡
6:USB转TTL串口线,用于终端命令行,我的PL2303芯片的(吐槽,还是FTDI Chip好)
7:我无奈的又用了一个USB hub,如今的笔记本USB口真TM金贵

好吧,把所有连接,连接,再连接,最后就是:

image012.jpg

镜像下载:https://www.raspberrypi.org/downloads/raspbian/
我用了最新的OS RASPBIAN STRETCH LITE,这是Debian9的OS,BB Black也是Debian
用Win32DiskImager工具软件烧写空的SD卡,烧完就插卡上电,启动

image014.jpg

注意USB无线网卡和USB串口此时已经被系统识别!

image016.jpg

开始系统配置!

1:开启root权限,登陆pi账户,在命令行输入如下:
sudo passwd root
sudo passwd --unlock root
su root
跳转到root账户命令行

2:增加root账户SSH登陆权限,为了安全,默认情况OS禁止了root登陆
用nano编辑/etc/ssh/sshd_config
PermitRootLogin行处改为 'PermitRootLogin yes'

image018.jpg

3: 配置各个网卡
我的笔记本USB有线网卡IP:192.168.1.71,直接连接树莓ETH0网卡
我的树莓ETH0网卡IP:192.168.1.11(ETH0有时候识别为别的name,我搞不清这个name命名机制,谁懂 Why enxb827eb957644? Call me!
我的树莓USB无线网卡,使用DHCP,连接手机的wifi热点(吐槽: 外企Web不好用,干脆用自己的流量了)

我需要我的树莓有2个可以使用的网卡,但是无论怎么配置我发现都有使用冲突(一个静态IP,一个动态IP),网上一堆的配置教程都不Work,可把我整惨了,于是我决定自己搞:

ETH0(enxb827eb957644)配置: 修改/etc/ rc.local增加一行启动脚本

image020.jpg

Show log:
root@raspberrypi:/home# ls
init.sh  pi  power_on_time.log
root@raspberrypi:/home# cat init.sh
#!/bin/bash
x=$( ifconfig -a | grep -c "eth0" )
if [ $x -eq 1 ];then
if config eth0 192.168.1.11 up
else
ifconfig enxb827eb957644 192.168.1.11 up
fi

touch power_on_time.log
echo "Your PI is powered up at: " > power_on_time.log
date >> power_on_time.log

echo "Init..."

root@raspberrypi:/home#

USB无线网卡设置:
直接修改wpa_supplicant.conf:
root@raspberrypi:/etc# cd wpa_supplicant
root@raspberrypi:/etc/wpa_supplicant# ls
action_wpa.sh  functions.sh  ifupdown.sh  wpa_supplicant.conf
root@raspberrypi:/etc/wpa_supplicant# cat wpa_supplicant.conf
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="david-wifi"
        psk="12345678"
}
root@raspberrypi:/etc/wpa_supplicant#

或者修改interfaces文件,追加wpa.conf

image022.jpg

Interfaces内容:
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa.conf
# iface default inet dhcp

wpa.conf内容:
network={
        ssid="david-wifi"
        key_mgmt=WPA-PSK
        psk="12345678"
}

Show log:
root@raspberrypi:~# ifconfig -a
enxb827eb957644: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::9de1:de0c:cb1d:462b  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:95:76:44  txqueuelen 1000  (Ethernet)
        RX packets 2361  bytes 206594 (201.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1140  bytes 180441 (176.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.236  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::eb41:da24:d28:8575  prefixlen 64  scopeid 0x20<link>
        ether f4:28:53:0e:6a:25  txqueuelen 1000  (Ethernet)
        RX packets 69  bytes 6756 (6.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 101  bytes 11817 (11.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@raspberrypi:~# ping 192.168.1.11
PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.210 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.226 ms

--- 192.168.1.11 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.210/0.218/0.226/0.008 ms
^Croot@raspberrypi:~# ping www.baidu.com
PING www.a.shifen.com (180.97.33.107) 56(84) bytes of data.
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=1 ttl=50 time=45.1 ms
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=2 ttl=50 time=47.0 ms
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=3 ttl=50 time=39.5 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 39.559/43.928/47.057/3.184 ms
root@raspberrypi:~#
root@raspberrypi:~#

重启树莓派,让一切生效!

配置更新树莓派!

1:必须会用raspi-config指令,首先设置扩展SD卡容量

image024.jpg

image026.jpg

查看内存,查看存储器,最后重新分配一个tmp文件夹用于存放调试的临时程序文件,不用往FLASH上面写了

2: 更新OS内容
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

设置Vim,如果你喜欢Vim
sudo apt-get install vim
编辑/etc/vim/vimrc文件,在末尾添加以下内容
1: set nu #显示行号
2: syntax on #语法高亮
3: set tabstop=4 #Tab退四格

安装调试器:
sudo apt-get install gdbserver # 很重要!!!
sudo apt-get install picocom

如果以上有问题,请学习
1:http://www.waveshare.net/study/portal.php
2:ZLG致远电子【开发指南】M6G2C&A6G2C系列核心板软件开发指南_V1.05.pdf
3:所有请 image028.jpg 此外:我不打广告,只是这些用得到!

一点口水概念:
1:Linux里platform_driver,属于内存型设备驱动,驱动直接访问SOC内部寄存器,platform_device是位于芯片内部的所有片上外设,其它驱动均是用于SOC外部device访问

2:Linux中device tree配置主要起到了初始化板载硬件资源的作用,如初始化GPIO寄存器,UART寄存器等, 指定了这些寄存器的数值,dts源文件中还会有引脚分配等信息,配置引脚的功能,启动相应的驱动程序

3:Linux开发需要toolchains工具链,要写makefile,需要GDB(client debugger/server)调试器,这些资源需要自己找,自己匹配版本,自己编译测试,纷繁复杂(当然找个供应商就全解决了,都是钱的事,有钱可以是大爷。没钱你就跟我混,让你不花钱也能全搞定)

我真是说了一大堆的废话!赶紧上Linux-App-IDE,一定要整的像Keil-MDK一样方便好用,不用写Makefile
吐槽: 我知道有人喜欢在终端里用VIM,GDB/CGDB,NFS远程连接目标机GDBserver调试程序,我知道有人喜欢用Ubuntu 用DDD调试程序,我也知道树莓可以本地GCC/GDB,但是考虑编辑易用性,编译速度,考虑大众化,哥依然坚持Windows交叉编译调试。或者什么事哥错过了,请大家告诉我这个井底蛙!

提示:强大的终端软件MobaXterm Home Edition,貌似很好用,树莓可以不用屏幕了

(未完待续。。。)
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-9-26 11:18:19 | 显示全部楼层
嗯哼,可依一没老婆,二不是哥
网友投稿,欢迎大家留言讨论!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2018-9-5 08:48
  • 签到天数: 69 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-9-26 14:15:31 | 显示全部楼层
    喔喉tan90°还有我呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2017-9-28 14:59:01 | 显示全部楼层
    ky123 发表于 2017-9-28 14:48
    继续。。。。。。。。。

    为了探求一个免费,不断更新,官方支持,且好用的Linux应用软件开发IDE,我搜索了 ...

    别的不说,排版是完全仿照小哥的文案设置的。
    标红加粗都是的,是不是挺好看的?
    嗯,感觉好难得的。
    还有续的“等打赏中。。。”赶脚好萌,虽然没得赏,不过可依还是放上去了
    这个萌萌哒的小哥要多夸
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-8-16 20:22
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-10-10 12:40:00 | 显示全部楼层
    本帖最后由 ETY001 于 2017-10-10 12:41 编辑

    udev 负责给设备命名。Systemd v197 引入了可预测的网络接口名称自动给网络设备分配静态名称,网络接口现在是以前缀 en(以太网)、wl(WLAN)、或者 ww(WWAN)附上一个自动生成的标识符,产生了一个类似于 enp0s25 的条目。在 kernel parameters 中添加 net.ifnames=0 可以禁用此功能.
    https://www.freedesktop.org/wiki ... workInterfaceNames/
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-8-16 20:22
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-10-10 12:40:45 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2017-10-10 15:59:02 | 显示全部楼层
    ETY001 发表于 2017-10-10 12:40
    udev 负责给设备命名。Systemd v197 引入了可预测的网络接口名称自动给网络设备分配静态名称,网络接口现在 ...

    我仿佛嗅到了高手的气息
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-3-13 10:11
  • 签到天数: 1088 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2017-10-24 20:13:46 | 显示全部楼层
    这这个的好多。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2017-10-25 09:33:27 | 显示全部楼层
    yanhaijian 发表于 2017-10-24 20:13
    这这个的好多。

    分几天编的,可依厉不厉害?
    跟你说,早上好
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-15 20:49 , Processed in 0.216801 second(s), 35 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.