找回密码
 立即注册
Qt开源社区 门户 查看内容

树莓派[Raspberry Pi 2 Model B]测评(二)——树莓派2B的硬实力

2019-8-11 07:31| 发布者: admin| 查看: 1685| 评论: 0

摘要: 点击上方EEWORLD关注电子工程世界! 树莓派2B以它的教育专注赢得了拆摸Boy的尊重。可惜的是拆摸Boy已经过了教育阶段,拆摸重点自然应放在树莓派专注的另一个目的“创新”上。 “创新”本身是一个无法量化 ...
点击上方EEWORLD关注电子工程世界!


树莓派2B以它的教育专注赢得了拆摸Boy的尊重。可惜的是拆摸Boy已经过了教育阶段,拆摸重点自然应放在树莓派专注的另一个目的“创新”上。

“创新”本身是一个无法量化评测的社会属性,能评测评价的只好做眼在适合“创新”的政策、机制、措施、手段等内容,称之为“环境”吧,这恰恰是硅谷和中国大大小小孵化园之间可以深度探讨的社会话题。《创业的国度:以色列经济奇迹的启示》这本书感兴趣的朋友可以翻翻。围绕树莓派2B的微观环境到底适不适合创新,拆摸Boy也不得而知,毕竟,我也身处嘴上创新的边界线内。给想了解更多关于创新的朋友推荐一本书《创造力:心流与创新心理学》。

那么,这里我们就一起来拆解树莓派2B的“环境”实力好了。拆摸Boy以自己有限的眼界来看这些“环境”关于“计算”和“控制”的支持。

一、SOC

RPi2B搭配的是一颗博通的BCM2836 SOC(有趣的是,本文成文时,博通已经被安华高收入囊中,可认为是博通没有跟上时代的“创新”而致吗?不得而知)。





从博通的官网上我们无法找到BCM2836的任何实际资料而得知,这真是一颗官方都勇于不承认的高大洋牌处理器!据说是专供树莓派2B,还要签署乱七八糟的协议,总之就是说拆摸Boy这样的爱好者是不太可能拿到详细的资料啦。

转战到RPi官网的硬件索引提供了两份关于处理器的文档,一份是QA7_rev3.4.pdf 一份是VideoCoreIV-AG100-R.pdf,然并卵,这两份文档都不是给一般人看的。作为有一些年头的非视频处理工程师,拆摸Boy表示第一份文档看起来就没什么用,第二份文档看了也没什么用。

还剩下什么?四核?900Mhz?DSP?超频?很可惜,这些说法大部分没有博通官方支撑。四核,900Mhz,通过系统查看:









vcgencmd命令也看不到源代码,暗箱了。搜索引擎能找到的地方也都是各地团体自己摸索的结果,这边有一个合集。

BCM2836的DSP也没找到资料,暗箱了。

试试编译一个linux内核。先在https://github.com/raspberrypi/linux.git clone下来,用默认配置bcmrpi_defconfig 配置内核选项之后进行编译:









室温30度左右有空调,没有散热片的情况下:





室温无空调的7月份,编译内核这个事使得SOC最高温度达到68摄氏度。

上面粗略的看到这个编译过程用4个进程同时编译以充分利用soc的处理能力,总共耗时102分钟左右。一般来说make的-j参赛可以设置成核数*1.5或2,如果是4个核,可以设置成make-j6 或 make -j8 ,但是毕竟总共只有1G内存,而且SD卡的速度也不会在多核时有提升,所以拆摸Boy也就只尽量让4个核跑跑罢。后面拆摸Boy确实用8进程来尝试这一过程,得到的结果比4进程并不成直观线性:80分钟。同样的工作在拆摸Boy另一个CortexA9的4核4G SRAM的imx6机器上跑8进程,大概耗时20分钟。直觉上的强烈差异导致拆摸Boy对BCM2836计算能力低下的印象。网上有怎么跑专业benchmark的文章,从整数计算、浮点数计算、IO吞吐、memory压力等各个方面给予整体的数据支撑,不过能充分提升计算能力的DSP也被博通暗箱了。

拆摸Boy作为一个工程师,对资料的齐全要求比较高,不太喜欢被暗箱的情况。你开放出来我不看,那是我的事,把不准某天需要了我能够有资料看;你不开放,那就是你的事,我想看都没得看。即便不开放,也可以有详细的文档描述。这颗官网上都刷不出存在感的SOC,也就不要提文档了。这样的情况下拆摸Boy便不打算花精力去做理性的性能评估。

另一边,成本上拆摸Boy不知道这颗料现在能拿到多少,但在量的基础上,我估计其他CortexA9 四核的SOC应该同样可以做到类似的价格。

放在2015年7月来说树莓派2B的这颗SOC,CPU的计算性上没什么突出,在高大洋的暗箱保护下整体性能显得十分鸡肋。

二、GPU

这个SOC的GPU是博通自己家的VideoCore IV。拆摸Boy之前并没有用过博通的相关SOC,毕竟大厂不太会理会爱好者需求。这颗SOC比较颠覆认知的地方在GPU和CPU的关系,这种关系可能也成为博通不愿开放芯片资料的一个原因吧。普遍上认为GPU是CPU的协处理器,由CPU启动并初始化GPU完成后面的任务,而在这颗SOC反过来,上电首先是GPU的行为,根据/boot/下的几个txt和bin文件进行初始化,然后才把控制权交给ARM CPU,这里看起来CPU成了GPU的协处理器,博通只是把armcortex用成扩展自家的处理器,这一点从raspbain管理工具/opt/vc/bin/vcgencmd的目录和命名也可看出一些端倪,前缀是VC:VideoCore。





vcgencmd工具用来动态修改、查询系统硬件的方方面面,具体的作用可以从截图中揣摩一二,比如temp,比如hdmi,比如clock。同样的全局修改/boot/config.txt也可以达成。RPi官网有全面的config.txt资料。

博通开放了部分GPU资料和代码,据说有团体在这上面做工作。介绍上说这个GPU支持OpenGL ES 1.1, OpenGL ES 2.0, 硬件加速 OpenVG1.1, Open EGL, OpenMAX 和1080p30 H.264 编解码,可问题是拆摸Boy不做音视频编解码,所以看了也没什么用。熟悉OpenGL ES和视频算法的同学可以在/opt/vc/lib中找到库支持。

GPU可以用来做数值运算。VideoCoreIV-AG100-R.pdf 里面描述了一些相关汇编代码,raspbain系统里的/opt/vc/src/hello_pi/hello_fft里面用GPU实现了快速傅立叶变换,网络上也有零散的hacker材料介绍这部分内容。和完整的资料相比,显得少得可怜,拆摸Boy也不打算花太多时间做这件事,如果是我的产品,预算有限的情况下不太倾向于用这种太保守的器件。

对拆摸Boy来说,GPU目前可以感受到的也就剩下H264的电影。这也是大家能看到的表现上树莓派2B很抢手的一点。看电影似乎只能通过omxplayer进行h264的硬解,估计和VideoCore的保守与硬件严重相关而不能通用化 导致社区不太有动力进行相关工作。

装载字幕需要有中文环境和中文字体,同时需要确认音频编码要么可以被VideoCore硬解,要么可以直接传递给HDMI TV由TV进行音频解码。得益于拆摸Boy 32G 的Class10 SD卡,卡里保存了一部h264编码的沃卓斯基兄弟电影《木星上行》。那美丽的女主,令拆摸Boy把该电影放在硬盘里念念不删,拆摸Boy的地盘,有特权给女神来个特写吧:





关于影片的一些编码信息:









用omxplayer通过hdmi播放









硬解H264确实如想象中给力,动态画面渲染丰富、亮度变化强烈的地方一点也不拖尾,看着很是流畅。查看cpu占用,平均98%的空闲,显示出CPU工作很轻松,一点也不烫:









omxplayer不足之处在中文字幕的编码有时候会报错退出,对视频文件的纠错兼容性不强,错了就闪退掉。

VideoCore确实不错啊,很不错啊,可惜拆摸Boy无法深度拆摸,一半原因是资料太少,一半原因是拆摸Boy不太了解GPU和视频处理的相关工作。那就不多评价吧。

根据一些描述来看,感觉(没有辅佐的确实资料)BCM2836很多计算能力并没有对“创新”者开放——要么封闭,或友好的开放——要么只有简单的叙述性材料,除了4颗arm cortex v7内核外,还有2颗GPU,1颗DSP,从比例上说3/7,小一半更强大的计算能力没能为“创新”营造很好的环境,不能不说是很大的遗憾。

三、接口

BCM2836 据说有常用的GPIO,USB,I2S,I2C,SPI,UART等外设,还有CSI摄像头和DSI显示接口,确实没找到数据手册,只好按照BCM2835来类比,想来外设配置不会差到哪里去。

有就好,raspbian社区已经把各种驱动都做好了。不过之前需要开启CSI,I2C,SPI外设的支持,要么自己编辑/etc/下的配置文件,要么用raspi-config。

启动信息拆摸Boy也有大部分看不懂,索性贴出来看的懂的同学就自己看吧。

pi@raspberrypi ~ $ dmesg

[ 0.000000]Booting Linux on physical CPU 0xf00

[ 0.000000]Initializing cgroup subsys cpuset

[ 0.000000]Initializing cgroup subsys cpu

[ 0.000000]Initializing cgroup subsys cpuacct

[ 0.000000]Linux version 4.0.9-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303(prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #807SMP PREEMPT Fri Jul 24 15:21:02 BST 2015

[ 0.000000] CPU:ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d

[ 0.000000] CPU: PIPT / VIPT nonaliasing datacache, VIPT aliasing instruction cache

[ 0.000000]Machine model: Raspberry Pi 2 Model B Rev 1.1

[ 0.000000] cma:Reserved 8 MiB at 0x3a800000

[ 0.000000]Memory policy: Data cache writealloc

[ 0.000000] Onnode 0 totalpages: 241664

[ 0.000000]free_area_init_node: node 0, pgdat 808424c0, node_mem_map b9fa6000

[ 0.000000] Normal zone: 2124 pages used for memmap

[ 0.000000] Normal zone: 0 pages reserved

[ 0.000000] Normal zone: 241664 pages, LIFO batch:31

[ 0.000000][bcm2709_smp_init_cpus] enter (8660->f3003010)

[ 0.000000][bcm2709_smp_init_cpus] ncores=4

[ 0.000000]PERCPU: Embedded 11 pages/cpu @b9f6d000 s16128 r8192 d20736 u45056

[ 0.000000]pcpu-alloc: s16128 r8192 d20736 u45056 alloc=11*4096

[ 0.000000]pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3

[ 0.000000]Built 1 zonelists in Zone order, mobility grouping on. Total pages: 239540

[ 0.000000]Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1792 bcm2708_fb.fbheight=952bcm2709.boardrev=0xa01041 bcm2709.serial=0x61e53599smsc95xx.macaddr=B8:27:EB:E5:35:99 bcm2708_fb.fbswap=1 bcm2709.disk_led_gpio=47bcm2709.disk_led_active_low=0 sdhci-bcm2708.emmc_clock_freq=250000000vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait

[ 0.000000] PIDhash 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: 939656K/966656K available (5885K kernel code, 378K rwdata, 1788Krodata, 404K init, 757K bss, 18808K reserved, 8192K cma-reserved)

[ 0.000000]Virtual kernel memory layout:

[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)

[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072kB)

[ 0.000000] vmalloc : 0xbb800000 - 0xff000000 (1080 MB)

[ 0.000000] lowmem : 0x80000000 - 0xbb000000 ( 944MB)

[ 0.000000] modules : 0x7f000000 - 0x80000000 ( 16MB)

[ 0.000000] .text : 0x80008000 - 0x80786860 (7675 kB)

[ 0.000000] .init : 0x80787000 - 0x807ec000 ( 404 kB)

[ 0.000000] .data : 0x807ec000 - 0x8084aa64 ( 379 kB)

[ 0.000000] .bss : 0x8084aa64 - 0x809081cc ( 758 kB)

[ 0.000000]SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1

[ 0.000000]Preemptible hierarchical RCU implementation.

[ 0.000000] Additional per-CPU info printed withstalls.

[ 0.000000]NR_IRQS:608

[ 0.000000]Architected cp15 timer(s) running at 19.20MHz (virt).

[ 0.000014]sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 3579139424256ns

[ 0.000037]Switching to timer-based delay loop, resolution 52ns

[ 0.000323]Console: colour dummy device 80x30

[ 0.002072]console [tty1] enabled

[ 0.002135]Calibrating delay loop (skipped), value calculated using timer frequency..38.40 BogoMIPS (lpj=192000)

[ 0.002236]pid_max: default: 32768 minimum: 301

[ 0.002610]Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)

[ 0.002679]Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)

[ 0.004009]Initializing cgroup subsys blkio

[ 0.004088]Initializing cgroup subsys memory

[ 0.004155]Initializing cgroup subsys devices

[ 0.004215]Initializing cgroup subsys freezer

[ 0.004291]Initializing cgroup subsys net_cls

[ 0.004406] CPU:Testing write buffer coherency: ok

[ 0.004530]ftrace: allocating 20020 entries in 59 pages

[ 0.053400]CPU0: update cpu_capacity 1024

[ 0.053481]CPU0: thread -1, cpu 0, socket 15, mpidr 80000f00

[ 0.053529][bcm2709_smp_prepare_cpus] enter

[ 0.053685]Setting up static identity map for 0x54f130 - 0x54f164

[ 0.113300][bcm2709_boot_secondary] cpu:1 started (0) 18

[ 0.113612][bcm2709_secondary_init] enter cpu:1

[ 0.113665]CPU1: update cpu_capacity 1024

[ 0.113674]CPU1: thread -1, cpu 1, socket 15, mpidr 80000f01

[ 0.133279][bcm2709_boot_secondary] cpu:2 started (0) 18

[ 0.133532][bcm2709_secondary_init] enter cpu:2

[ 0.133562]CPU2: update cpu_capacity 1024

[ 0.133570]CPU2: thread -1, cpu 2, socket 15, mpidr 80000f02

[ 0.153323] [bcm2709_boot_secondary]cpu:3 started (0) 18

[ 0.153568][bcm2709_secondary_init] enter cpu:3

[ 0.153596]CPU3: update cpu_capacity 1024

[ 0.153604]CPU3: thread -1, cpu 3, socket 15, mpidr 80000f03

[ 0.153694]Brought up 4 CPUs

[ 0.153829] SMP:Total of 4 processors activated (153.60 BogoMIPS).

[ 0.153871] CPU:All CPU(s) started in SVC mode.

[ 0.154912]devtmpfs: initialized

[ 0.174634] VFPsupport v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5

[ 0.175880]pinctrl core: initialized pinctrl subsystem

[ 0.180646] NET:Registered protocol family 16

[ 0.186444] DMA:preallocated 4096 KiB pool for atomic coherent allocations

[ 0.187676]bcm2709.uart_clock = 3000000

[ 0.192577]hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.

[ 0.192648]hw-breakpoint: maximum watchpoint size is 8 bytes.

[ 0.192821]Serial: AMBA PL011 UART driver

[ 0.193040]3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011rev2

[ 0.673056] console [ttyAMA0] enabled

[ 0.677512]bcm2708_vcio 3f00b880.mailbox: mailbox at f300b880

[ 0.755654]bcm2708-dmaengine 3f007000.dma: DMA legacy API manager at f3007000,dmachans=0x7f35

[ 0.765006]bcm2708-dmaengine 3f007000.dma: Load BCM2835 DMA engine driver

[ 0.771912]bcm2708-dmaengine 3f007000.dma: dma_debug:0

[ 0.777297]bcm_power: Broadcom power driver

[ 0.781592]bcm_power_open() -> 0

[ 0.784924]bcm_power_request(0, 8)

[ 0.814110]bcm_mailbox_read -> 00000080, 0

[ 0.818317]bcm_power_request -> 0

[ 0.822390] SCSIsubsystem initialized

[ 0.826429]usbcore: registered new interface driver usbfs

[ 0.832034]usbcore: registered new interface driver hub

[ 0.837532]usbcore: registered new device driver usb

[ 0.844556]Switched to clocksource arch_sys_counter

[ 0.879446]FS-Cache: Loaded

[ 0.882712]CacheFiles: Loaded

[ 0.897388] NET:Registered protocol family 2

[ 0.903070] TCPestablished hash table entries: 8192 (order: 3, 32768 bytes)

[ 0.910336] TCP bind hash table entries: 8192(order: 4, 65536 bytes)

[ 0.917046] TCP:Hash tables configured (established 8192 bind 8192)

[ 0.923528] TCP:reno registered

[ 0.926817] UDPhash table entries: 512 (order: 2, 16384 bytes)

[ 0.932812]UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)

[ 0.939668] NET:Registered protocol family 1

[ 0.944482] RPC:Registered named UNIX socket transport module.

[ 0.950501] RPC:Registered udp transport module.

[ 0.955253] RPC:Registered tcp transport module.

[ 0.959977] RPC:Registered tcp NFSv4.1 backchannel transport module.

[ 0.967553] hwperfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available

[ 0.977216]futex hash table entries: 1024 (order: 4, 65536 bytes)

[ 0.998953] VFS:Disk quotas dquot_6.5.2

[ 1.003268] VFS:Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

[ 1.013093]FS-Cache: Netfs 'nfs' registered for caching

[ 1.019639] NFS:Registering the id_resolver key type

[ 1.024819] Key type id_resolver registered

[ 1.029026] Keytype id_legacy registered

[ 1.035784]Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)

[ 1.043422] ioscheduler noop registered

[ 1.047457] ioscheduler deadline registered (default)

[ 1.052937] ioscheduler cfq registered

[ 1.059369]BCM2708FB: allocated DMA memory fac00000

[ 1.064395]BCM2708FB: allocated DMA channel 0 @ f3007000

[ 1.097859]Console: switching to colour frame buffer device 224x59

[ 1.121411]Serial: 8250/16550 driver, 0 ports, IRQ sharing disabled

[ 1.128210]uart-pl011 3f201000.uart: no DMA platform data

[ 1.134902]vc-cma: Videocore CMA driver

[ 1.138913]vc-cma: vc_cma_base = 0x00000000

[ 1.143704]vc-cma: vc_cma_size = 0x00000000 (0MiB)

[ 1.149230]vc-cma: vc_cma_initial = 0x00000000 (0MiB)

[ 1.154990]vc-mem: phys_addr:0x00000000 mem_base=0x3dc00000 mem_size:0x3f000000(1008 MiB)

[ 1.179010] brd:module loaded

[ 1.191662]loop: module loaded

[ 1.195980] vchiq: vchiq_init_state: slot_zero= 0xbac80000, is_master = 0

[ 1.203976]Loading iSCSI transport class v2.0-870.

[ 1.210007]usbcore: registered new interface driver smsc95xx

[ 1.215976]dwc_otg: version 3.00a 10-AUG-2012 (platform bus)

[ 1.422170] CoreRelease: 2.80a

[ 1.425439]Setting default values for core params

[ 1.430362]Finished setting default values for core params

[ 1.636445]Using Buffer DMA mode

[ 1.639832]Periodic Transfer Interrupt Enhancement - disabled

[ 1.645792]Multiprocessor Interrupt Enhancement - disabled

[ 1.651468] OTGVER PARAM: 0, OTG VER FLAG: 0

[ 1.655933]Dedicated Tx FIFOs mode

[ 1.659864]WARN::dwc_otg_hcd_init:1047: FIQ DMA bounce buffers: virt = 0xbac14000 dma =0xfac14000 len=9024

[ 1.669929] FIQFSM acceleration enabled for :

[ 1.669929]Non-periodic Split Transactions

[ 1.669929]Periodic Split Transactions

[ 1.669929]High-Speed Isochronous Endpoints

[ 1.700744]dwc_otg: Microframe scheduler enabled

[ 1.700818]WARN::hcd_init_fiq:412: FIQ on core 1 at 0x803f3da8

[ 1.711396]WARN::hcd_init_fiq:413: FIQ ASM at 0x803f4104 length 36

[ 1.722292]WARN::hcd_init_fiq:438: MPHI regs_base at 0xbb89a000

[ 1.732960]dwc_otg 3f980000.usb: DWC OTG Controller

[ 1.742570]dwc_otg 3f980000.usb: new USB bus registered, assigned bus number 1

[ 1.754570]dwc_otg 3f980000.usb: irq 32, io mem 0x00000000

[ 1.764780]Init: Port Power? op_state=1

[ 1.773253]Init: Power Port (0)

[ 1.781310] usbusb1: New USB device found, idVendor=1d6b, idProduct=0002

[ 1.792790] usbusb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1

[ 1.804698] usbusb1: Product: DWC OTG Controller

[ 1.814016] usbusb1: Manufacturer: Linux 4.0.9-v7+ dwc_otg_hcd

[ 1.824578] usbusb1: SerialNumber: 3f980000.usb

[ 1.834660] hub1-0:1.0: USB hub found

[ 1.842984] hub1-0:1.0: 1 port detected

[ 1.851856]dwc_otg: FIQ enabled

[ 1.851870]dwc_otg: NAK holdoff enabled

[ 1.851882]dwc_otg: FIQ split-transaction FSM enabled

[ 1.851925]Module dwc_common_port init

[ 1.852331]usbcore: registered new interface driver usb-storage

[ 1.863137]mousedev: PS/2 mouse device common for all mice

[ 1.874214]bcm2835-cpufreq: min=600000 max=900000

[ 1.883890]Driver 'mmcblk' needs updating - please use bus_type methods

[ 1.895246]sdhci: Secure Digital Host Controller Interface driver

[ 1.905971]sdhci: Copyright(c) Pierre Ossman

[ 1.915279]mmc-bcm2835 3f300000.mmc: mmc_debug:0 mmc_debug2:0

[ 1.925658]mmc-bcm2835 3f300000.mmc: DMA channels allocated

[ 1.974922]sdhci-pltfm: SDHCI platform and OF driver helper

[ 1.990201]ledtrig-cpu: registered to indicate activity on CPUs

[ 2.001087]hidraw: raw HID events driver (C) Jiri Kosina

[ 2.011436]usbcore: registered new interface driver usbhid

[ 2.021695]usbhid: USB HID core driver

[ 2.031561] TCP:cubic registered

[ 2.039475]Initializing XFRM netlink socket

[ 2.044714]Indeed it is in host mode hprt0 = 00021501

[ 2.059109] NET:Registered protocol family 17

[ 2.070464] Keytype dns_resolver registered

[ 2.079961]Registering SWP/SWPB emulation handler

[ 2.090399]registered taskstats version 1

[ 2.099258]vc-sm: Videocore shared memory driver

[ 2.108610] [vc_sm_connected_init]:start

[ 2.118129][vc_sm_connected_init]: end - returning 0

[ 2.129882]Waiting for root device /dev/mmcblk0p6...

[ 2.143395]mmc0: host does not support reading read-only switch, assuming write-enable

[ 2.158275]mmc0: new high speed SDHC card at address 0007

[ 2.168912]mmcblk0: mmc0:0007 SD32G 29.3 GiB

[ 2.181474] mmcblk0: p1 p2 < p5 p6 > p3

[ 2.224708] usb1-1: new high-speed USB device number 2 using dwc_otg

[ 2.235916]Indeed it is in host mode hprt0 = 00001101

[ 2.248430]EXT4-fs (mmcblk0p6): INFO: recovery required on readonly filesystem

[ 2.260335]EXT4-fs (mmcblk0p6): write access will be enabled during recovery

[ 2.444988] usb1-1: New USB device found, idVendor=0424, idProduct=9514

[ 2.456389] usb1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0

[ 2.468995] hub1-1:1.0: USB hub found

[ 2.477378] hub1-1:1.0: 5 ports detected

[ 2.764824] usb1-1.1: new high-speed USB device number 3 using dwc_otg

[ 2.875116] usb 1-1.1:New USB device found, idVendor=0424, idProduct=ec00

[ 2.886698] usb1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0

[ 2.901658]smsc95xx v1.0.4

[ 2.968966]smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-3f980000.usb-1.1, smsc95xxUSB 2.0 Ethernet, b8:27:eb:e5:35:99

[ 3.064835] usb1-1.5: new high-speed USB device number 4 using dwc_otg

[ 3.175409] usb1-1.5: New USB device found, idVendor=0bda, idProduct=8179

[ 3.187158] usb1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[ 3.199247] usb1-1.5: Product: 802.11n NIC

[ 3.208169] usb1-1.5: Manufacturer: Realtek

[ 3.217177] usb1-1.5: SerialNumber: 00E04C0001

[ 10.105843]EXT4-fs (mmcblk0p6): orphan cleanup on readonly fs

[ 10.117035] EXT4-fs(mmcblk0p6): 1 orphan inode deleted

[ 10.126972]EXT4-fs (mmcblk0p6): recovery complete

[ 11.296722]EXT4-fs (mmcblk0p6): mounted filesystem with ordered data mode. Opts: (null)

[ 11.309629] VFS:Mounted root (ext4 filesystem) readonly on device 179:6.

[ 11.330033]devtmpfs: mounted

[ 11.338462]Freeing unused kernel memory: 404K (80787000 - 807ec000)

[ 12.451010]udevd[178]: starting version 175

[ 12.580815]random: nonblocking pool is initialized

[ 12.900005]spi-bcm2835 3f204000.spi: no tx-dma configuration found - not using dma mode

[ 12.986757] spispi0.0: setting up native-CS0 as GPIO 8

[ 13.058296] spispi0.1: setting up native-CS1 as GPIO 7

[ 13.095077]bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate100000)

[ 13.219869]r8188eu: module is from the staging directory, the quality is unknown, you havebeen warned.

[ 13.255931] ChipVersion Info: CHIP_8188E_Normal_Chip_TSMC_D_CUT_1T1R_RomVer(0)

[ 13.319132]usbcore: registered new interface driver r8188eu

[ 15.106397]EXT4-fs (mmcblk0p6): re-mounted. Opts: (null)

[ 15.413336]EXT4-fs (mmcblk0p6): re-mounted. Opts: (null)

[ 20.395365] MACAddress = c8:e7:d8:e7:c7:7b

[ 20.480181]smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup

[ 21.827602]R8188EU: ERROR assoc success

[ 22.563921]cfg80211: Calling CRDA to update world regulatory domain

[ 24.059470]Adding 102396k swap on /var/swap. Priority:-1 extents:1 across:102396k SSFS

BCM2836毕竟是手机芯片,一个USB OTG已经可以满足设计要求,可当用作树莓派2B的通用处理器时,没有802.3和多几个USB接口就比较操蛋了。不得已只能用LAN9514扩展1个10/100M 802.3和4个USB 2.0出来。100M的802.3想弄一些高速网络应用的场景,比如小型集群,显得很勉强。上器件网查了一下,LAN9514应该也要20-30块钱吧,就是下面这颗料了。





看一下使用的模块,SPI,I2C,SND各种模块都插进去等待调用:





GPIO的资料比较齐全,可以在这里找到。





虽然器件不太开放,但社区还是很给力,乱七八糟的资料要找,还是能找到一些线索。

总之各种接口还算齐全,这些接口对EE工程师来说相当熟悉,上了一层Linux系统后虽然驱动复杂好在使用上又相当简单,拆摸Boy也就不做过多累述。

四、最后

树莓派2B按道理可以提供很不错的计算能力,可惜厂家的缘故,这种能力3/7发挥不出来,而这3/7的能力却又主要关于浮点、DSP的强力运算,这样的运算在图像处理、机器视觉等领域有大量需求。这确是十分遗憾的地方,期待树莓派3的时候可以得到改善。

树莓派2B提供了比较完整的外设控制环境,各种EE工程师熟悉的接口都可以找到对应渠道,对扩展使用其他模块提供良好扩展性。树莓派社区的强大也简化这些接口的使用,后面说软件的时候再慢慢掰吧。

抛开树莓派的环境单说博通这颗SOC,BCM2836,作为手机应用处理器与imx6,am43xx等处理器相比,集成性、开放性、操作性、标准性差了很多。

依据网络上各种新闻展示的树莓派应用来看,确实更多的是面向控制,比如各种开关量控制,各种数据采集的应用;和低计算量的应用,比如BT下载客户端,NAS等场景;针对高速应用的场景,虽然有人折腾,但看过去都属于可行性证明(好歹树莓派2B的raspbian系统是一个完整的debianlinux环境),没太多实际用途。

观看普世情怀的商业胜利——树莓派[Raspberry Pi 2 Model B]测评(一)和更多精彩讨论请点击下方阅读原文。






----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:电子工程世界,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了