一、 实验目的和要求
1. 了解嵌入式板卡一般情况;
2. 熟悉pdDuino的供电等接线方式;
3. 复习Linux启动过程(操作系统课);
4. 复习通过Linux获得硬件数据(操作系统课);
5. 熟练掌握串口在PC上的使用;
6. 熟练掌握Linux的以太网和WiFi配置;
7. 熟练掌握Linux的SSH配置;
8. 熟练掌握PC上的SSH软件。
9. 掌握嵌入式板卡和PC建立文件共享的方式;
10. 寻找和安装交叉编译环境,理解交叉编译;
11. 熟悉嵌入式板卡的Linux下的编程环境;
12. 了解远程访问嵌入式板卡图形桌面的方式。
二、 实验内容和原理
1. 在PC上安装好USB串口驱动和串口终端软件;
2. 按照图纸要求,将USB串口线与pcDuino连接好,并连接好以太网(如果打算采用WiFi,可不连接以太 网)。如有条件,接上HDMI线和HDMI显示器;
3. 给pcDuino上电,记录启动过程的输出;
4. 从终端登陆pcDuino的Linux,配置网络和/或WiFi,从pcDuino和PC两端证明网络已连接;
5. 配置pcDuino的SSH,可尝试采用各种不同的认证方式;
6. 从PC通过SSH登陆pcDuino;
7. 看到多个不同端口的登陆(本机键盘/屏幕、串口和SSH),并运用Linux的write来互相通信。
8. 配置嵌入式板卡上的SAMBA客户端,使它能访问PC上共享的目录;
9. 尝试各种与嵌入式板卡传递文件的方式并做比较:
10. 通过SAMBA共享;
11. 通过NFS共享(选做);
12. 通过sftp传递;
13. 通过串口XModem协议传递;
14. 通过Dropbox共享(选做)。
15. 选择和安装PC上的交叉编译环境;
16. 交叉编译C语言的浮点运算程序到pcDuino上去运行,证明所编译的程序是ARM的;
17. 尝试嵌入式板卡上的三个语言的开发环境:C/C++、Python和Java;
18. 尝试一种从PC远程访问嵌入式板卡图形桌面的方式:x-window(通过SSH)、RDP或VNC。
三、 实验过程和数据记录
1. 安装USB串口欲动和串口终端软件
a. 实验使用的USb串口线芯片为PL2303,从官网下载Mac对应的驱动。
b. 安装串口程序minicom,使用命令brew install minicom安装,minicom –s命令打开串口程序
Figure 1 minicom启动界面
2. 画出你所实际实施的连接示意图;
Figure 2 树莓派通过串口进行连接
3. 给出实际拍摄的板卡连接照片;
Figure 3 板卡连接照片
4. 给出所用的器材的列表;
a. RaspberryPi B+
b. MacOS
c. DVI显示器
d. 无线路由器一台
e. Micro-USB线
f. USB-TTL串口线
g. HDMI-DVI连接线
h. USB键盘
i. 5V电源(充电宝)
5. 给出拷贝得到的树莓派启动时的输出文字,并逐行解释;
Uncompressing Linux... done, booting the kernel. # 解压内核并且启动树莓派 [ 0.000000] Booting Linux on physical CPU 0xf00 # 树莓派启动CPU [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct # 初始化cgroups子系统 [ 0.000000] Linux version 3.18.7-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #755 SMP PREEMPT Thu Feb 12 17:20:48 GMT 2015 # Linux内核版本号,以及交叉编译的访问,用户名和工具链等信息 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d # CPU型号:ARMv7 [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache # 指令和cache类型 [ 0.000000] Machine model: Raspberry Pi 2 Model B # 树莓派型号:2代B [ 0.000000] cma: Reserved 8 MiB at 0x3a800000 [ 0.000000] Memory policy: Data cache writealloc # 数据cache策略为fetch on write [ 0.000000] [bcm2709_smp_init_cpus] enter (8620->f3003010) [ 0.000000] [bcm2709_smp_init_cpus] ncores=4 # CPU为4核 [ 0.000000] PERCPU: Embedded 11 pages/cpu @ba05d000 s12864 r8192 d24000 u45056 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 239776 [ 0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=592 bcm2708_fb.fbheight=448 bcm2709.boardrev=0xa21041 bcm2709.serial=0x3951248f smsc95xx.macaddr=B8:27:EB:51:24:8F bcm2708_fb.fbswap=1 bcm2709.disk_led_gpio=47 bcm2709.disk_led_active_low=0 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait # 内核启动的某些参数,包括CPU、内存以及各个终端 [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) # 内核进程、文件缓存哈洗表 [ 0.000000] Memory: 940740K/966656K available (5785K kernel code, 377K rwdata, 1760K rodata, 396K init, 771K bss, 25916K reserved) # 占用内存报告 [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xffe00000 (2048 kB) [ 0.000000] vmalloc : 0xbb800000 - 0xff000000 (1080 MB) [ 0.000000] lowmem : 0x80000000 - 0xbb000000 ( 944 MB) [ 0.000000] modules : 0x7f000000 - 0x80000000 ( 16 MB) [ 0.000000] .text : 0x80008000 - 0x80766748 (7546 kB) [ 0.000000] .init : 0x80767000 - 0x807ca000 ( 396 kB) [ 0.000000] .data : 0x807ca000 - 0x808287ec ( 378 kB) [ 0.000000] .bss : 0x808287ec - 0x808e96d4 ( 772 kB) # 内段地址分配 [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] NR_IRQS:480 [ 0.000000] Architected cp15 timer(s) running at 19.20MHz (virt). # ARM的cp15处理器,管理cache等 [ 0.000015] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 3579139424256ns [ 0.000039] Switching to timer-based delay loop, resolution 52ns [ 0.000340] Console: colour dummy device 80x30 [ 0.001767] console [tty1] enabled [ 0.001818] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000) [ 0.001901] pid_max: default: 32768 minimum: 301 [ 0.002319] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.002380] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.003661] Initializing cgroup subsys memory [ 0.003747] Initializing cgroup subsys devices [ 0.003806] Initializing cgroup subsys freezer [ 0.003856] Initializing cgroup subsys net_cls [ 0.003920] Initializing cgroup subsys blkio # 初始化cgroups子系统,内存以及块设备等 [ 0.004033] CPU: Testing write buffer coherency: ok [ 0.004151] ftrace: allocating 19969 entries in 59 pages [ 0.053552] CPU0: update cpu_capacity 1024 [ 0.053633] CPU0: thread -1, cpu 0, socket 15, mpidr 80000f00 [ 0.053670] [bcm2709_smp_prepare_cpus] enter [ 0.053838] Setting up static identity map for 0x536c78 - 0x536cd0 [ 0.113528] [bcm2709_boot_secondary] cpu:1 started (0) 17 [ 0.113843] CPU1: Booted secondary processor [ 0.113851] [bcm2709_secondary_init] enter cpu:1 [ 0.113906] CPU1: update cpu_capacity 1024 [ 0.113915] CPU1: thread -1, cpu 1, socket 15, mpidr 80000f01 [ 0.133488] [bcm2709_boot_secondary] cpu:2 started (0) 18 [ 0.133738] CPU2: Booted secondary processor [ 0.133745] [bcm2709_secondary_init] enter cpu:2 [ 0.133775] CPU2: update cpu_capacity 1024 [ 0.133784] CPU2: thread -1, cpu 2, socket 15, mpidr 80000f02 [ 0.153550] [bcm2709_boot_secondary] cpu:3 started (0) 16 [ 0.153789] CPU3: Booted secondary processor [ 0.153796] [bcm2709_secondary_init] enter cpu:3 |