树莓派可以网络安装了—— Beta版正在公测

大部分时候,我们都是用另一台计算机(比如运行 Raspberry Pi Imager写入镜像)来给树莓派装系统的。

但是,如果你一开始没有PC,如何将操作系统安装到 SD 卡上呢?

这是经典的先有鸡还是先有蛋的问题,我们刚刚解决了它。

新的网络安装程序正在运行

现在有一个实现网络安装的 Raspberry Pi 引导加载程序beta 版本,我们希望你能帮助我们对其进行测试。

新的网络安装功能可直接在 Raspberry Pi 4 或 Raspberry Pi 400 上启动Raspberry Pi Imager应用程序,方法是:先用以太网电缆从 Internet 下载它。

Raspberry Pi Imager 应用程序将在你的 Raspberry Pi 内存中运行,然后把操作系统写入空白 SD 卡或 USB 磁盘,就像平常一样。

如何使用网络安装程序

如果你想试用这个网络安装程序,首先必须安装bootloader的测试版。

对于当前已经上市的电路板,需要更新bootloader。

不过一旦测试期结束,我们最终将在树莓派出厂时直接安装新的网络引导加载程序,不再需要此步骤。

安装新的 beta 引导加载程序

在 Raspberry Pi 4 或 400 上更新bootloader最简单方法是在 Raspberry Pi 或另一台计算机上运行Raspberry Pi Imager,将所需的软件复制到 SD 卡上。

你需要一张备用的空白 SD 卡,如果你使用的是 Raspberry Pi 或另一台没有 SD 卡插槽的计算机,则需要一个 USB to SD转接头。

你应该知道,用于更新 Raspberry Pi 引导加载程序的 SD 卡将被擦除所有现有数据,因此不要将有重要数据的 SD 卡装在当前Raspberry Pi上 。

在 Imager 应用程序中,单击“选择操作系统”按钮并在弹出窗口中向下滚动“操作系统”列表。选择“Misc utility images”,然后选择“Beta Test Bootloader”。

选择新的 Beta 测试引导加载程序

接下来,你需要选择引导顺序。

所有选项相同,但启动顺序不同。有其他理由,否则应该选择“SD Card Boot”。

选择引导顺序

然后按照正常说明将更新的引导加载程序写入 SD 卡。

当 SD 卡完成写入后,你应该关闭 Raspberry Pi 并移除现有的 SD 卡并将其放在安全的地方。

将刚用 Imager 应用程序写过的卡插入 Raspberry Pi 并重新打开电源。板子 LED 会定期闪烁,屏幕会变绿,表示新的 beta 版本引导加载程序成功启动。

如果你想将引导加载程序恢复到“Release”版本,可以再次执行这些步骤,选择顶部的“引导加载程序”选项而不是“Beta 测试引导加载程序”选项。

现在移除你的引导加载程序更新 SD 卡并重启树莓派。

尝试网络启动

现在你已经更新了引导加载程序,一切应该和以前一样工作。

当 Raspberry Pi 启动时,引导加载程序会搜索要加载的软件。它首先查找 SD 卡,然后查找 USB 记忆棒,依此类推。

它会一直循环下去,直到找到要使用的软件。几秒钟后,你会在屏幕上看到一个诊断信息,告知它正在做什么。

如果你想插入原来的 SD 卡(你在这一切开始之前使用的那个),你的 Raspberry Pi 应该会像往常一样无缝地引导回操作系统。

如果你在插槽中没有 SD 卡或使用空白 SD 卡的情况下启动 Raspberry Pi,并且连接了键盘,那么你现在会看到一些不同的东西。

如果你连接了键盘(Raspberry Pi 400 总是如此),但 Raspberry Pi 无法找到操作系统,它将显示新的网络安装界面。

新的网络安装界面


在后台,你的 Raspberry Pi 仍在寻找可运行的操作系统。但是此时,你可以通过按住该Shift键三秒钟来启动网络安装过程。在出现提示时按确认你要继续按Space,它应该会要求你插入以太网电缆。

你将需要通过以太网电缆将 Raspberry Pi 物理连接到路由器,而不是将其连接到无线网络。你需要一根两端都有公头 RJ45 连接器的以太网电缆。大多数家用路由器的背面都有网口,可让你插入以太网电缆,因此将电缆的一端插入路由器,另一端插入树莓派。

记得插网线

当它检测到已插入电缆时,它会自动下载 Raspberry Pi Imager。如果下载失败,你可以重复该过程。

安装 Raspberry Pi Imager

最终,Raspberry Pi Imager 应用程序在树莓派上启动,允许你将完整的操作系统安装到新的空白 SD 卡或 USB 记忆棒上。

如果你还没有这样做,此时应该将另一张空白 SD 卡插入 Raspberry Pi 卡槽。Raspberry Pi Imager 允许你直接从 Internet 烧录系统。

系统装好后不会在启动时看到网络安装界面。如果还想运行它,只需要删除所有可启动磁盘,等 Raspberry Pi Imager 运行再重新插入它们。但注意不要覆盖任何有重要工作内容的磁盘!

Python的各种排序

一、插入排序(Insertion-Sort)

  插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

  把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。

1、原理

  • 从第二个元素开始和前面的元素进行比较,如果前面的元素比当前元素大,则将前面元素 后移,当前元素依次往前,直到找到比它小或等于它的元素插入在其后面
  • 然后选择第三个元素,重复上述操作,进行插入
  • 依次选择到最后一个元素,插入后即完成所有排序

2、举例

举个例子,假设我现在有一个数列[11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22]需要使用插入排序,我们来看看使用插入排序的详细步骤:

  • 首先第二个元素99和前面的元素11比较,99>11,第一轮完了,列表是 1 [11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22] 
  • 然后,33作为比较元素,和前面的元素99比较,11<33<99交换位置,33插入到11和99之间,列表为 1 [11, 33, 99, 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22] 
  • 接着,33<69<99交换位置,列表变为    1 [11, 33, 69, 99, 77, 88, 55, 11, 33, 36,39, 66, 44, 22] 
  • 以此类推,69<77<99,77插入到69和99之间,列表变为   1 [11, 33, 69, 77, 99, 88, 55, 11, 33, 36,39, 66, 44, 22] 
  • 77<88<99, 88插入到77和99之间,列表变为    1 [11, 33, 69, 77, 88, 99, 55, 11, 33, 36,39, 66, 44, 22]  
  • 33<55<69<77<88<99,55插入到33和69之间,列表变为   1 [11, 33, 69, 77, 88, 99, 55, 11, 33, 36,39, 66, 44, 22]  
  • 。。。。。。。
  • 最终得到列表  1 [11, 11, 22, 33, 33, 36, 39, 44, 55, 66, 69, 77, 88, 99] 

注:从第二个元素开始,以此和前面的元素比较,找出相应位置插入。

3、特点

插入排序的适用场景:一个新元素需要插入到一组已经是有序的数组中,或者是一组基本有序的数组排序

  • 比较性:排序时元素之间需要比较,所以为比较排序
  • 稳定性:从代码我们可以看出只有比较元素大于当前元素,比较元素才会往后移动,所以相同元素是不会改变相对顺序
  • 时间复杂度:插入排序同样需要两次循坏一个一个比较,故时间复杂度也为O(n^2)
  • 空间复杂度:只需要常数个辅助单元,所以空间复杂度也为O(1)
  • 记忆方法:想象成在书架中插书:先找到相应位置,将后面的书往后推,再将书插入
def insertion_sort(arr):
    """插入排序"""
    # 第一层for表示循环插入的遍数
    for i in range(1, len(arr)):
        # 设置当前需要插入的元素
        current = arr[i]
        # 与当前元素比较的比较元素
        pre_index = i - 1
        while pre_index >= 0 and arr[pre_index] > current:
        # 当比较元素大于当前元素则把比较元素后移
            arr[pre_index + 1] = arr[pre_index]
        # 往前选择下一个比较元素
            pre_index -= 1
        # 当比较元素小于当前元素,则将当前元素插入在 其后面
            arr[pre_index + 1] = current
    return arr

arr = [4,5,6,1,3,2]
print (insertion_sort(arr))

正确的输出内容:

[1, 2, 3, 4, 5, 6]

二、选择排序(Selection sort)

  选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,所以称为:选择排序。

1、原理

(1)设第一个元素为比较元素,依次和后面的元素比较,比较完所有元素找到最小的元素,将它和第一个元素互换。
(2)重复上述操作,我们找出第二小的元素和第二个位置的元素互换,以此类推找出剩余最小元素将它换到前面,即完成排序。

2、举例

举个例子,假设我现在有一个数列需要使用冒泡来排序 [11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22],

我们来看看使用冒泡的详细步骤:

1、首先11作为比较元素和列表后面的所有元素比较,找到最小的11,并放在第一位,第一轮完了,列表是  [11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22]

2、然后,99作为比较元素,和后面的元素[33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22]作比较,找到最小的11,和第二位元素99交换位置,即第二轮比较完后,列表为   [11, 11, 33 , 69, 77, 88, 55, 99, 33, 36,39, 66, 44, 22]      

3、第三轮比较完,22最小,和第三个元素33交换位置,列表变为  [11, 11, 22, 69, 77, 88, 55, 99, 33, 36,39, 66, 44, 33]

4、最终得到列表  [11, 11, 22, 33, 33, 36, 39, 44, 55, 66, 69, 77, 88, 99]

注:是一轮比较完后,找出最小的,再交换这个元素和对应轮数位置处的元素位置,每轮只交换一次。二冒泡排序是,没比较一次,就交换一次位置,每轮要交换很多次。回到顶部(go to top)

 3、代码

   实现思路: 使用双重for循环,内层变量为i, 外层为j,在内层循环中不断的比较相邻的两个值(j, j+1)的大小,如果j+1的值大于j的值,交换两者位置,每循环一次,外层的i增加1,等到i等于(len(arr) – 1)的时候,结束循环。

def selection_sort(arr):
    """选择排序"""
    # 第一层for表示循环选择的遍数
    for i in range(len(arr) - 1):
        # 将起始元素设为最小元素
        min_index = i
        # 第二层for表示最小元素和后面的元素逐个比较
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[min_index]:
                # 如果当前元素比最小元素小,则把当前元素角标记为最小元素角标
                min_index = j
        # 查找一遍后将最小元素与起始元素互换
        arr[min_index], arr[i] = arr[i], arr[min_index]
    return arr

A = [64, 25, 12, 22, 11] 
print (selection_sort(A))

正确的输出内容:

[11, 12, 22, 25, 64]

Raspberry Pi OS官方的64位正式版来了

树莓派 Raspberry Pi 的官方操作系统 Raspberry Pi OS 此前一直是 32 位版本。

后来开始内测,但一直没有确定正式版本的发布时间。

近日,树莓派基金会宣布,Raspberry Pi OS 64 位版本正式推出,大家在官网下载频道可以直接下载了。

地址:

https://www.raspberrypi.com/software/operating-systems/

64 位的主要好处是内存超过 4GB 的硬件可以得到充分利用。在所有 Raspberry Pi 计算机中,Raspberry Pi 1、Pi 2 和 Zero 支持 32 位操作系统,而 Zero 2、Pi 3 和 Pi 4 都能够运行 64 位操作系统。

官方表示,由于一些闭源软件仅适用于 arm64 硬件,新推出的 64 位版本系统能够更好地运行这些软件。

需要注意的是,Raspberry Pi OS 64 位操作系统默认安装的 Chromium 不包含 WidevineCDM 库,因此无法在诸如网飞这类网站上观看 DRM 加密的内容。

想在树莓派上跑Julia?没问题。

Julia是一款开源通用编程语言,专为科学计算而设计。它结合了 Python 和 Ruby 等高级语言的易用性,以及 C 的速度。Julia 是大学开发研究的理想选择,从本科到博士都可以考虑它。

其实在2017年,该语言的创造者之一Viral Shah就跟 Raspberry Pi 基金会取得了联系,并将 Julia 移植到了 ARM 平台,特别是针对 Raspberry Pi。从那时起,他们出色的完成了对 ARM 平台以及树莓派的支持。

而树莓派基金会也将Julia正式的纳入了Raspberry Pi OS的软件库,大家可以直接用APT安装了。

现在Julia 团队不仅将语言本身移植到 Pi,而且还增加了对GPIOSense HATMinecraft的支持。

Julia 开发人员之一 Simon 首先将 Julia 徽标加载到Jupyter 笔记本中的矩阵,然后将其显示在 Sense HAT LED 矩阵上。然后他做了一些矩阵变换,Sense HAT 显示了这些操作的效果。

可以使用以下命令在 Raspberry Pi 上安装 Julia:

sudo apt update
sudo apt install julia

为 Julia 安装 Jupyter notebook:

sudo apt install julia libzmq3-dev python3-zmq
sudo pip3 install jupyter
julia -e 'Pkg.add("IJulia");'

也可以从 Julia 控制台轻松安装额外的软件包:

Pkg.add("SenseHat")

Julia 团队还创建了一个资源网站,用于在 Pi 上开始使用 Julia:juliaberry.github.io

好了,Julia开发者们。在树莓派上用起来吧。

英特尔推出新款矿机芯片Bonanza Mine,25%产能已被预订

虚拟货币价格这几年猛涨,搞得显卡价格也一路飙升,为了赚更多钱,英伟达就推出了专业矿卡,价格比普通显卡更贵,但是没有视频输出接口。随后英伟达还把普通显卡进行限制,无法全速挖矿。AMD虽然没有推出专业矿卡,但所有显卡均未限制挖矿。

看这这两家企业赚得盆满钵满,英特尔自然就坐不住了。英特尔早前已确认,不会限制锐炬显卡的挖矿能力,同时还在开发专用于挖矿的芯片,代号“ Bonanza Mine”,也叫“Bonanza Lake”。

根据最新挖掘到的细节,Intel BZM2 ASIC其实已经是其第二代产品,但第一代我们从未听说过。

它采用Intel 7nm工艺制造(也就是现在所谓的Intel 4),面积仅为14.16平方毫米(一块300mm晶圆可切割最多4000颗),核心频率1.67GHz,挖矿算力137GH/s(也就是137000MH/s),而功耗仅为2.5W,1TH/s的算力也只需要18W。

25颗这样的芯片可以配置成一套系统,总算力高达3.425TH/s,功耗不过62.5W,而总的供电电压也只需8.875V,平均到每一颗芯片只有区区0.335V。

这就是Intel所说的“超低电压”、“超高能效”。

英特尔专业矿卡的算力和功耗远超英伟达显卡,而且和那些专业矿卡定位不同。比特币有数量限制,现在开采的难度很高,买显卡挖比特币几乎不可能回本,所以一般是显卡用于挖以太坊,矿机用来挖比特币。和专业矿机相比,英特尔专业矿卡的表现就不算很优秀了。

当然,对于GRIID这种挖矿企业来说,只要设备挖矿能够盈利就够了,不必过度在意盈利多少,它们缺的就是设备。依靠挖矿,GRIID已经在纽交所上市,市值高达33亿美元。

GRIID 透露,已经与比特大陆和比特微签订挖矿ASIC 合约,但也跟英特尔签订明确的供应合约,“英特尔预计今年开始出货ASIC,在2023 年5 月前所有订单提供BZM2 ASIC 固定价格。

此外,在某些条件下,GRIID 有权向英特尔购买至少25%合格ASIC,直到约2025 年5 月”。事实上,主要比特币ASIC 制造商,例如比特大陆和比特微,都面临交货周期过长、芯片定价过高的问题,因为他们必须仰赖第三方的晶圆代工厂来制造晶片。

在目前晶圆制造产能紧缺的当下,在加上加密货币价格波动剧烈,需求不确定、也相对零散,因此台积电这样的代工厂不会将这些公司的订单置于优先地位。

另一方面,英特尔拥有供应链和生产力,Bonanza Mine 芯片有望打进利润丰厚的加密货币矿机芯片市场。ISSCC 预定2 月20 日登场,英特尔有机会在2 月23 日在ISSCC 上分享相关新讯息,目前还没有透露是否将Bonanza Mine芯片视为产品发布,或是做为一个研究项目。

Wireshark的抓包和分析,看这篇就够了!

网络故障排查,基本上对于网络工程师、运维及技术开发,都是日常见面但又颇具挑战的工作,也几乎是大家的基本能力。

尤其是对服务端工程师来说,一个功能上线后出了问题,能快速定位、排查、解决十分必要,这也是为什么经常面试时会考 HTTP、TCP 协议相关的内容,你总要弄清楚网络传输的底层逻辑。

程序本身还好排查,主要是因为程序在自己这边,只要花时间总有希望搞定。网络的难度,一方面是领域不同,很多专门写程序(特别是偏上层的应用)的工程师,对网络很不了解;一方面网络是双方的事,也就是客户端和服务端,还包括中间路径上的设备等,“变量”更多….

当然也有一波优秀的 “SRE”(Server Restart Engineer),遇到问题先上“重启大法”,也许也能搞定不少问题。但是,根因依然是未知,即使问题暂时消失了,不知道什么时候,它又会再次到来,然后再次重启……

所以,能否快速解决网络问题、将损失降到最小,就体现真正的技术实力了。

网络排查能力如何提升?

无他,刻意练习和经验积累。就我自己来说,一般是习惯防患于未然,将一切网络问题扼杀在摇篮里,所以经常关注一些网络故障排查的案例和解决办法。也整理了一些学习方法:

提升网络排查能力,不单单需要扎实掌握网络各层知识、提高排查视野,还要精进排查技术、完善知识体系,才能灵活运用排查工具和解决实际问题。

上面这个学习方法,来自我几年前关注的一个博主「杨胜辉」,他长期在博客上分享自己的排查经验,通过他对网络故障实际案例的解析,我学习了很多排查思路以及排查工具使用技巧。

在他的经历分享中,说他有一个小习惯:每处理一个问题就开一个文件夹,里面放上相关的日志、抓包文件等,当时记录有 500 个文件夹之多,逐步形成了对于“网络排查”这个宏大主题的一些自己的实操经验和方法论。 

(图虽小,但懂的自然懂…..膜拜大佬)

杨胜辉目前是 eBay 中国卓越技术中心基础架构部门的运维经理,主要负责 eBay 全球的流量管理业务,推动 Kubernetes 在 eBay 流量管理场景中的落地。

而网络和应用的关系是十分错综复杂的,所以他在这方面积累了很多鲜活的案例、接地气的排查经验,不是单讲理论或工具,而是围绕「案例」这个核心分析排查思路 → 聚焦工具使用 → 深入关键技术点,最终把网络知识带你系统地串下来,还有 Wireshark、tcpdump 等工具的使用技巧,可以说是案例、策略到技巧,全面提升我们的网络排查能力

最近他在极客时间出了个专栏《网络故障排查案例课》,我立马就入手了,不愧是跟网络打了 18 年交道的老兵,果然没让我失望。

👆扫上图二维码,免费试读👆

早鸟 + 口令「paicha999」,立减 ¥45

仅需 ¥84,40 个网络故障案例学到手

最有意思的是,很多案例“看起来是 A,查的时候是 B,最后定位出来是 C”,可以说十分真实了。这是个值得所有运维、开发、测试都读一读的专栏,或者当个实战案例库,其中一些思路和方法,基本上能在工作中“拿来即用”,真是详尽又硬核的一个专栏。

专栏有哪些特色呢?


特色一:夯实排查基础

首先会从网络分层模型出发,通过对分层模型和每层工具的理解,以及对抓包分析技术的认识,让你掌握并提升用 tcpdump 和 Wireshark 做网络分析的能力,打下网络排查的底层基础,为后续的学习铺平道路。

特色二:40+ 实战案例教学

接下来会根据 40+ 真实问题排查案例,在具体剖析、解读、排查的过程中,让你牢牢掌握与网络排查相关的核心知识和技术,包括抓包分析的应用,以及与 TCP、应用层与网络等相关问题的排查思路,完善网络排查技能树,形成技术体系。

特色三:接地气趣味教学

除此之外,让我更惊喜的是专栏打破常规图文+音频的学习方式,而是根据不同的知识点或讲解内容,通过视频讲演操作步骤、工具使用技巧、排查思路等,案例也大多是工作中常见的场景,讲解风格清晰又接地气,看得很轻松,“学得不累”。

专栏干货满满,学完你将获得:

  • 40+ 真实网络排查案例解析
  • 20 个网络故障疑难点的排查思路
  • Wireshark、tcpdump工具使用技巧
  • 18 年架构老兵的网络排障心法

目录分享给大家,很全,有实战,有心得。听极客的同学说,专栏的每一篇老师都要录上 3、4 遍才会分享出来。作为极客时间老用户,真的说句靠谱,课程质量真的闭眼可入。

最后要我说,网络问题的排查过程,就像读一本侦探小说,充满了神秘感和吸引力。当你掌握了网络排查技术之后,就不会再像过去那样想要逃避,反而会像猎人遇到猎物一样兴奋,很想一试身手,最终把案件调查彻底,水落石出。

一顿饭钱搞定网络排查,值了!

折扣价报名地址:https://time.geekbang.org/column/intro/100104301?code=aaxEpM6PP6bLw57vcw73wUIvfTFWB0UuczMsMg9cxV4%3D

Jetson Nano开发AI应用的认证课程

NVIDIA的深度学习学院(DLI)为边缘计算开发人员,教育者,学生和终身学习者提供了实用的,动手的AI培训和认证。 

Jetson AI部分,NVIDIA提供了两种认证:

一、任何人都可以完成的”Jetson AI专家认证,即Jetson AI Specialist
二、是针对教育工作者的的Jetson AI大使认证,即Jetson AI Ambassador

课程介绍

如今,世界各地使用 NVIDIA Jetson Nano 开发者套件的创客、自学开发者和嵌入式技术爱好者均已掌握 AI 的强大力量。借助这款简单易用而又功能强大的计算机,您将可在图像分类、物体检测、分割和语音处理等应用中并行运行多个神经网络。在本课程中,您将在自己的 Jetson Nano 上使用 Jupyter iPython notebook 构建基于计算机视觉模型的深度学习分类项目。

您将学习如何:

  • 安装 Jetson Nano 和相机
  • 为分类模型采集图像数据
  • 为回归模型注释图像数据
  • 基于您的数据训练神经网络,以创建模型
  • 使用您创建的模型在 Jetson Nano 上运行推理

完成课程学习后,您将能使用 Jetson Nano 创建深度学习分类和回归模型。

培训证书

成功完成本课程和测试后,您将获得 NVIDIA DLI 证书,以证明您在这一主题领域的技能,助力您的职业发展。

课程模式

个人在线自主学习,课程包含视频和代码示及练习例等

课程详情

预备知识:了解 Python 的基础知识(会有帮助,但非必需)

工具、库和框架:PyTorch、Jetson Nano

课程时长:6 学时(课件有效期 6 个月)

课程语言:中文

课程价格:免费

您需要准备好的硬件

  • NVIDIA Jetson Nano 开发者套件
  • 高性能 microSD 卡:最小 32GB(我们已测试并推荐此产品
  • 5V 4A 电源和 2.1 毫米直流桶式连接器(我们已测试并推荐此产品
  • 2 针跳线:必须添加到 Jetson Nano 开发者套件主板,以使桶式插座电源供电(此处为产品示例
  • Logitech C270 USB 网络摄像头(我们已测试并推荐 此产品) 。
  • USB 线缆:Micro-B 至 Type-A,支持数据传输(我们已测试并推荐此产品
  • 一台能以闪存形式向 microSD 卡写入数据的联网计算机

树莓派GPIO控制 —— C语言篇

一. 常用开源工程简介

树莓派内核中已经编译自带了gpio的驱动,我们常通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有:

  1. Python GPIO
    【开发语言】——python
    【简单介绍】——树莓派官方资料中推荐且容易上手。python GPIO是一个小型的python库,可以帮助用户完成raspberry相关IO口操作,但是python GPIO库还没有支持SPI. I2C或者1-wire等总线接口。
    【官方网站】—— https://code.google.com/p/raspberry-gpio-python/
  2. wiringPi
    【开发语言】——C语言
    【简单介绍】——wiringPi适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi的API函数和arduino非常相似,这也使得它广受欢迎。作者给出了大量的说明和示例代码,这些示例代码也包括UART设备,I2C设备和SPI设备等。
    【官方网站】—— http://wiringpi.com/
  3. BCM2835 C Library
    【开发语言】——C语言
    【简单介绍】BCM2835 C Library可以理解为使用C语言实现的相关底层驱动,BCM2835 C Library的驱动库包括GPIO. SPI和UART等,可以通过学习BCM2835 C Library熟悉BCM2835相关的寄存器操作。如果有机会开发树莓派上的linux驱动,或自主开发python或PHP扩展驱动,可以从BCM2835 C Library找到不少的“灵感”。
    【官方网站】—— http://www.airspayce.com/mikem/bcm2835/

    . 树莓派GPIO编号方式
  1. 功能物理引脚:
    从左到右,从上到下:左边基数,右边偶数:1-40
  2. BCM:
    编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号。
  3. wiringpi:
    编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程。正如图3 WiringPi一栏。

    三. WiringPi GPIO
  1. 说明:
    WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GUN Lv3。wiringPi使用C或者C++开发并且可以被其他语言包转,例如python. ruby或者PHP等。
    wiringPi包括一套gpio控制命令,使用gpio命令可以控制树莓派GPIO管脚。用户可以利用gpio命令通过shell脚本控制或查询GPIO管脚。
  2. wiringPi安装
     1)使用GIT工具
    git clone git://git.drogon.net/wiringPi
    cd wiringPi
    ./build
    build脚本会帮助你编译和安装wiringPi

     2)直接下载
    在https://git.drogon.net/?p=wiringPi;a=summary下载最新版本编译使用
    tar xfz wiringPi-xx.tar.gz
    cd wiringPi-xx
    ./build

     3)raspbian使用apt-get安装
    sudo apt-get install wiringpi
  3. 测试:
    wiringPi包括一套gpio命令,使用gpio命令可以控制树莓派上的各种接口,通过以下指令可以测试wiringPi是否安装成功。
    $gpio -v
    $gpio readall #即可出现下面的gpio图
  1. 样例代码:
#include <wiringPi.h>
int main(void)
{
 wiringPiSetup() ;
 pinMode (0, OUTPUT) ;
 for(;;)
 {
  digitalWrite(0, HIGH) ; delay (500) ;
  digitalWrite(0, LOW) ; delay (500) ;
 }
}
  1. 编译运行:
    在树莓派上:
    gcc -Wall -o test test.c -lwiringPi
    sudo ./test

在虚拟机中:
am-linux-gcc -Wall -o test test.c -lwiringPi
sudo ./test

注:
1)IO的编号方式略有不同,采用wiring编码方式。
2)-lwiringPi表示动态加载wiringPi共享库。

四. BCM2835 C Library
下载:
$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.35.tar.gz
解压缩:
$tar xvzf bcm2835-1.35.tar.gz
进入压缩之后的目录:
$cd bcm2835-1.35
配置编译:
./configuremake
执行检查:
$sudo make check
安装bcm2835库:
$sudo make install

样例代码

#include < bcm2835.h>
//P1插座第11脚
#define PIN RPI_GPIO_P1_11
int main(int argc, char **argv)
{
  if (!bcm2835_init())
   return 1;

 // 输出方式
 bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);

 while (1)
 {
   bcm2835_gpio_write(PIN, HIGH);
  bcm2835_delay(100);

  bcm2835_gpio_write(PIN, LOW);
  bcm2835_delay(100);
 }
 bcm2835_close();
 return 0;
}

编译运行
gcc -o blink blink.c -lbcm2835
./blink

注:
1)IO的编号方式略有不同,采用BCM编码方式
2)-lbcm2835表示动态加载bcm2835共享库

参考链接:

http://elinux.org/RPi_Low-level_peripherals
http://blog.csdn.net/xukai871105/article/details/23115627

树莓派被曝开春上市,估值高于5亿美元,收入主要来源于生产版权费

获得4500万美元融资后,树莓派又启动了上市计划。

据The Telegraph报道,树莓派(Raspberry Pi)计划明年春天在英国伦敦上市,估值可能比5亿美元还高

现在,树莓派基金会已经从Stifel和Liberum两家机构聘请了专家,为公司提供上市咨询服务。

这也是今年3月树莓派被曝计划上市以来,一个最新的进展。

年初计划IPO,估值4亿美元

据The Telegraph称,早在今年3月,树莓派就已经有相关的上市计划,当时估值在4亿美元左右。

今年疫情期间,树莓派的需求也一直在增加。

在9月融资4500万美元后,树莓派的估值更是“水涨船高”,来到了5亿美元。

树莓派首席执行官、创始人Eben Upton对此表示:

我们一直非常在意,如何让机构筹措资金。9月份融到的4500万美元显然减轻了这种紧迫感,也让我们对未来5年有了更好的规划。

目前,这4500万美元主要被用来开发新产品。

树莓派怎么赚钱的?

树莓派基金会创立于2008年,初衷是为了提升青少年的编程能力

创始人Eben Upton在剑桥大学计算机教书时,发现学生们的编程能力“严重退化”,他便辞职进入美国博通,开始制作一个编程开发平台。

2012年2月29日,第一块树莓派面市。

这块树莓派基于ARM微型电脑主板制作,具备PC所有基本功能,部件全部整合在一张信用卡大小的主板上。

在Linux系统的加持下,树莓派只需要几行代码,就能做出不少好玩的项目。

Eben Upton对此非常自豪:

13年来,树莓派已经向100多个国家卖出了4200多万台设备。去年,我们的销售额更是创下了710万台的历史新高,利润为1140万英镑。

目前,树莓派已经向慈善机构捐款超过3000万英镑(约合人民币2.6亿)。

作为一家“非营利机构”,树莓派究竟是怎么赚钱的呢?

事实上,树莓派的大部分收入来源于版权费用。

这家机构主要做的是设计各种树莓派产品,然后将它们授权给制造商,并从中收取专利费用

不知道明年是不是就能买到树莓派的股票了。

美国FTC宣布:禁止英伟达收购Arm

如今,Arm 技术应用在很多领域。您的Android 手机是基于 Arm 的芯片,备受赞誉的Apple M1 芯片也基于 Arm。这种不断增长的投资组合是英伟达宣布有意收购该公司时引起关注的主要原因之一。

这笔估计为 400 亿美元的交易遭到了欧盟委员会和英国竞争与市场管理局等机构的强烈反对。现在,它面临美国联邦贸易委员会的另一个主要障碍。今天,美国联邦贸易委员会正式宣布将提起诉讼,以停止与 Nvidia Arm 的交易。

声明说:“联邦贸易委员会正在起诉,以阻止历史上最大的半导体芯片合并,以防止芯片集团扼杀下一代技术的创新渠道。” 该组织表示,它非常担心这笔交易可能会在整个芯片组行业创造一种反竞争环境,该行业已经受到了沉重的压力。

FTC 的主要担忧是,英伟达拥有 Arm 将允许前公司获得后公司与其他公司达成的交易和协议。这基本上可以让 Nvidia 提前了解其竞争对手的战略和弱点,并相应地定制其产品。此外,如果它觉得竞争对手获得了太多的优势,它可以控制对 Arm 产品的访问。

谷歌、微软,甚至芯片组制造商高通也都表达了对这笔交易的担忧。

英伟达表示,其对 Arm 的收购应在 2022 年底完成。然而,今天的消息使这看起来不太可能。

声明原文:美国联邦贸易委员会起诉阻止 400 亿美元的半导体芯片合并

美国联邦贸易委员会今天起诉,以阻止美国芯片供应商 Nvidia Corp. 以 400 亿美元收购英国芯片设计供应商 Arm Ltd。半导体芯片为对我们现代经济和社会至关重要的计算机和技术提供动力。拟议的垂直交易将使最大的芯片公司之一控制竞争对手公司赖以开发自己的竞争芯片的计算技术和设计。美国联邦贸易委员会的投诉称,合并后的公司将有手段和动机扼杀创新的下一代技术,包括用于在汽车中运行数据中心和驾驶员辅助系统的技术。

“联邦贸易委员会正在起诉阻止历史上最大的半导体芯片合并,以防止芯片集团扼杀下一代技术的创新渠道,”联邦贸易委员会竞争局局长Holly Vedova说。“未来的技术取决于保持当今竞争激烈的尖端芯片市场。这项提议的交易将扭曲 Arm 在芯片市场的激励措施,并允许合并后的公司不公平地削弱 Nvidia 的竞争对手。FTC 的诉讼应该发出一个强烈信号,即我们将积极采取行动,保护我们的关键基础设施市场免受非法垂直合并的影响,这些合并对未来的创新具有深远的破坏性影响。”

总部位于东京的软银集团旗下的 Arm 不供应或销售成品计算机芯片或设备。它为包括 Nvidia 在内的其他技术公司创建和许可微处理器设计和架构,也就是投诉中说的 Arm 处理器技术。反过来,这些公司依靠 Arm 处理器技术制造计算机芯片,为各种现代计算设备提供动力,从智能手机到平板电脑,再到驾驶辅助系统,再到大型数据中心的计算机。Arm 还提供重要的相关支持和服务。诉状称,Arm 使用行业描述的中立、开放许可方式为其处理器技术提供许可,并且通常被称为半导体行业的“瑞士”。

诉状称,总部位于加利福尼亚的英伟达是世界上最大、最有价值的计算公司之一。英伟达开发和销售计算机芯片和设备,以个人计算机和数据中心的独立图形处理单元 (GPU) 的主要供应商而闻名,这些单元广泛用于人工智能处理和图形处理。Nvidia 还开发和销售用于高级网络、数据中心中央处理单元和计算机辅助驾驶的产品。在这些领域,英伟达和英伟达的重要竞争对手都依赖 Arm 的技术来开发自己的竞争产品。

由于 Arm 的技术是使 Nvidia 与其竞争对手在多个市场上展开竞争的关键投入,诉状称,拟议的合并将使 Nvidia 有能力和动力利用其对该技术的控制来削弱其竞争对手,从而减少竞争并最终导致投诉称,产品质量下降、创新减少、价格上涨和选择减少,损害了数百万从基于 Arm 的产品中受益的美国人。

根据诉状,此次收购将损害英伟达使用基于 Arm 产品的三个全球市场的竞争:

用于乘用车的高级高级驾驶员辅助系统。这些系统提供计算机辅助驾驶功能,例如自动变道、车道保持、高速公路出入口和碰撞预防;


DPU SmartNIC,这是一种先进的网络产品,用于提高数据中心服务器的安全性和效率;


面向云计算服务提供商的基于 Arm 的 CPU。

这些新兴产品利用 Arm 的技术来满足提供云计算服务的现代数据中心的性能、能效和可定制性需求。“云计算”是指日益流行的计算业务模式,其中大型数据中心运营商远程提供计算服务和/或直接提供计算资源出租,以及为客户提供其他支持服务,客户可以运行应用程序、托管网站或在远程服务器上执行其他计算任务——即“云”。


诉状还称,此次收购将使 Nvidia 获得 Arm 被许可人(其中一些是 Nvidia 的竞争对手)的竞争敏感信息,从而损害竞争,并且可能会降低 Arm 追求被认为与英伟达的商业利益。

今天,Arm 的被许可方——包括 Nvidia 的竞争对手——经常与 Arm 共享竞争敏感信息。诉状称,被许可方依赖 Arm 在其产品的开发、设计、测试、调试、故障排除、维护和改进方面提供支持。Arm 被许可人与 Arm 共享他们的竞争敏感信息,因为 Arm 是中立的合作伙伴,而不是竞争对手的芯片制造商。投诉称,此次收购可能会导致对 Arm 及其生态系统的信任严重丧失。

此次收购还可能通过消除 Arm 本来会追求的创新来损害创新竞争,除非与 Nvidia 的利益发生冲突。诉状称,如果英伟达确定它们可能会损害英伟达,合并后的公司将没有动力开发或启用其他有益的新功能或创新。

投诉对象为 Nvidia Corp.、Arm Ltd. 和 Arm 所有者软银集团公司。委员会以 4-0 的投票结果发布行政投诉。行政审判定于2022年8月9日开始。

在整个调查过程中,委员会工作人员与欧盟、英国、日本和韩国的竞争管理机构的工作人员密切合作。