Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the simply-static domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/html/wp-includes/functions.php on line 6121
树莓派 – 第 8 页

树莓派GPIO使用指南

 RPi.GPIO是 Python的一个module( 模块 ), 树莓派官方系统默认已经安装, 仍在不断更新中, 截至20180521, 最新版0.6.3, 适配了树莓派3B+, 可以访问  python主页下载源码 .      本文根据树莓派RPI.GPIO模块的官方文档翻译,当时的模块版本为0.6.3。官方的帮助文档的链接: https://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/

1、导入模块

要导入RPi.GPIO模块,请执行以下操作:

import RPi.GPIO  as GPIO 

通过这样做,您可以通过脚本的其余部分将其称为GPIO。

导入模块并检查它是否成功:

tryimport RPi.GPIO  as GPIO 
except RuntimeError print
"Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script"

2、引脚编号

     在RPi.GPIO中,有两种方法可以对Raspberry Pi上的IO引脚进行编号。第一种是使用BOARD编号系统。这是指Raspberry Pi板上P1接头上的引脚号。使用这种编号系统的优点是,无论树莓派的电路板版本如何,您的硬件都能正常工作。你不需要重新连接你的连接器或更改你的代码。

     第二个编号系统是BCM号码。这是一种较低级别的工作方式 – 它指的是Broadcom SOC上的通道号码。您必须始终使用那个通道编号所对应的树莓派板上哪个引脚的图表。您的脚本程序可能会在Raspberry Pi板的硬件修订后而不能使用。

        树莓派引脚有BOARD和BCM两种编号方式( 使用python时? 似乎使用C还有一种wringPi编号方式 ), BOARD具有很好的适用性( 不用看接口图,数引脚1~40就可以接线 ), 不论树莓派1 2 3, 都不用修改代码, 吼啊! BCM编号方式换个版本再接线时数引脚是不行的, 需要看下下面的接口图…不难看出推荐用BOARD编号方式. 但很多程序中使用BCM方式. 
下面给出一张树莓派2B的硬件接口图( 来源找不到了,侵删 ): 

图中的GPIOxx的方框即是BCM编码方式, 直接写数字的深灰框是BOARD编码方式, 如BCM编码方式的 GPIO02 对应BOARD编码方式的 3.

只需要使用BCM编号方式时, 用下面这两张: 


要指定您使用引脚编号方式:

GPIO.setmode(GPIO.BOARD)
  # or
GPIO.setmode(GPIO.BCM)

要检测哪个引脚编号系统已被设置模式(例如,由另一个Python模块配置过模式):

mode = GPIO.getmode()

模式将是GPIO.BOARD,GPIO.BCM或None

3、警告

您可能在Raspberry Pi的GPIO上有多个脚本/电路。因此,如果RPi.GPIO检测到引脚已被配置为默认(输入)以外的其他引脚,则在尝试配置脚本时会收到警告。要禁用这些警告:

GPIO.setwarnings(False)

4、设置一个通道

您需要设置您用作输入或输出的每个通道。将通道配置为输入:

GPIO.setup(channel, GPIO.IN)

(其中通道是基于您指定的编号系统(BOARD或BCM)的通道编号)。

有关设置输入通道的更多高级信息可以在这里找到。

要将通道设置为输出:

GPIO.setup(channel, GPIO.OUT)

(其中通道是基于您指定的编号系统(BOARD或BCM)的通道编号)。

您还可以为您的输出通道指定一个初始值:

GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)

4、设置多个频道

您可以一次设置多个通道(从0.5.8开始)。例如:

chan_list  =  [ 11 ,12 ]     #加你想尽可能多的渠道!
                       #你可以用元组代替,即:
                       #chan_list =(11,12)
GPIO.setup(chan_list, GPIO.OUT)

5、输入

读取GPIO引脚的值:

GPIO.input(channel)

     ( 其中通道是基于您指定的编号系统(BOARD或BCM)的通道编号)。这将返回0 / GPIO.LOW / False或1 / GPIO.HIGH / True。

     有几种方法可以将GPIO输入到您的程序中。第一种也是最简单的方法是在某个时间点检查输入值。这就是所谓的“轮询”,如果你的程序在错误的时间读取了值,可能会错过输入。轮询在循环中执行,并可能是处理器密集型的。响应GPIO输入的另一种方式是使用’中断’(边沿检测)。边沿是从高电平到低电平(下降沿)或从低电平到高电平(上升沿)的意思。

5.1 上拉/下拉电阻

     如果你没有连接到任何输入引脚,它将’浮空’。换句话说,读入的值是未定义的,因为它只有在按下按钮或开关时才会连接到任何东西。由于引脚会接收到干扰,可能读取到变化的值。

      为了解决这个问题,我们使用上拉或下拉电阻。这样,可以设置输入的默认值。可以在硬件上使用上拉/下拉电阻并使用软件。在硬件中,通常使用输入通道和3.3V(上拉)或0V(下拉)之间的10K电阻。RPi.GPIO模块允许您配置Broadcom SOC以在软件中执行此操作:

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  # or
GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

(其中通道是基于您指定的编号系统的通道编号 – BOARD或BCM)。

5.2 测试输入(轮询)

您可以立即读取IO引脚的输入值:

if GPIO.input(channel):
    print('Input was HIGH')
else:
    print('Input was LOW')

要通过轮询轮询等待按钮按下:

while GPIO.input(channel) == GPIO.LOW:
    time.sleep(0.01)  # wait 10 ms to give CPU chance to do other things

(这里假设按下按钮将输入从LOW改变为HIGH)

5.3 中断和边缘检测

    边沿是电信号从低电平变为高电平(上升沿)或从高电平变为低电平(下降沿)的状态变化。很多时候,我们更关心输入状态的变化而非价值。这种状态变化是一个事件。

     为了避免在程序忙于做其他事情时按下按钮,有两种方法可以解决这个问题:

  • wait_for_edge()函数
  • event_detected()函数
  • 在检测到边缘时运行线程的回调函数

wait_for_edge()函数

wait_for_edge()函数设计用于阻止程序的执行,直到检测到边缘。换句话说,上面等待按钮按下的示例可以被重写为:

GPIO.wait_for_edge(channel, GPIO.RISING)

    请注意,您可以检测GPIO.RISING,GPIO.FALLING或GPIO.BOTH类型的边沿。这样做的好处是它使用的CPU时间可以忽略不计,因此CPU还有很多工作要做。

如果您只想等待一段时间,则可以使用timeout参数:

#上升沿等待最多5秒(超时以毫秒为单位)
channel = GPIO.wait_for_edge(channel, GPIO_RISING, timeout=5000)
if channel is None:
    print('Timeout occurred')
else:
    print('Edge detected on channel', channel)

event_detected()函数

event_detected()函数设计用于与其他工作一起循环使用,但与轮询不同,在CPU忙于处理其他事情时,不会错过输入状态的变化。当使用类似Pygame或PyQt的东西时,这可能很有用,因为主循环会及时监听和响应GUI事件。

GPIO.add_event_detect(channel, GPIO.RISING)  # add rising edge detection on a channel
do_something()
if GPIO.event_detected(channel):
    print('Button pressed')

请注意,您可以检测GPIO.RISING,GPIO.FALLING或GPIO.BOTH的事件。

Threaded回调

RPi.GPIO为回调函数运行第二个线程。这意味着回调函数可以与主程序同时运行,并立即响应边缘事件。例如:

def my_callback(channel):
    print('This is a edge event callback function!')
    print('Edge detected on channel %s'%channel)
    print('This is run in a different thread to your main program')
GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback)  # add rising edge detection on a channel
...the rest of your program...

如果你想要多个回调函数:

ef my_callback_one(channel):
    print('Callback one')
def my_callback_two(channel):
    print('Callback two')
GPIO.add_event_detect(channel, GPIO.RISING)
GPIO.add_event_callback(channel, my_callback_one)
GPIO.add_event_callback(channel, my_callback_two)

请注意,在这种情况下,回调函数按顺序运行,而不是同时运行。这是因为只有一个线程用于回调,每个回调都按照定义的顺序运行。

5.4开关抖动

您可能会注意到,每次按下按钮都会多次调用回调。这是所谓的“开关抖动”的结果。处理抖动有两种方法:

  • 在开关输入脚上添加一个0.1uF的电容。
  • 软件去除抖动
  • 以上两种方法的结合

要使用软件去抖动,请将bouncetime =参数添加到指定回调函数的函数中。抖动时间应以毫秒为单位指定。例如:

#在通道上添加上升沿检测,忽略处理
   GPIO的开关抖动操作的进一步边缘200ms 
GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback, bouncetime=200)

要么

GPIO.add_event_callback(channel, my_callback, bouncetime=200)

5.5 删除事件检测

如果由于某种原因,您的程序不再希望检测边缘事件,则可以删除它们:

GPIO.remove_event_detect(channel)

6、输出

要设置GPIO引脚的输出状态,请执行以下操作:

GPIO.output(channel, state)

(其中通道是基于您指定的编号系统(BOARD或BCM)的通道编号)。

状态可以是0 / GPIO.LOW / False或1 / GPIO.HIGH / True。

A.设置输出高电平:

GPIO.output(12, GPIO.HIGH)
 # or
GPIO.output(12, 1)
 # or
GPIO.output(12, True)

B.设置输出低电平:

GPIO.output(12, GPIO.LOW)
 # or
GPIO.output(12, 0)
 # or
GPIO.output(12, False)

7、输出到几个通道

您可以一次设置输出多个频道(从0.5.8开始)。例如:

chan_list = [11,12]                             # also works with tuples
GPIO.output(chan_list, GPIO.LOW)                # sets all to GPIO.LOW
GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW))   # sets first HIGH and second LOW

8.在RPi.GPIO中使用PWM

要创建一个PWM实例:

p = GPIO.PWM(channel, frequency)

要启动PWM:

p.start(dc)   # where dc is the duty cycle (0.0 <= dc <= 100.0)

要更改频率:

p 。ChangeFrequency (freq )   #其中freq是以Hz为单位的新频率

要改变占空比:

p.ChangeDutyCycle(dc)  # where 0.0 <= dc <= 100.0

要停止PWM:

p.stop()

请注意,如果实例变量’p’超出范围,PWM也会停止。

每两秒闪烁一次LED的示例:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)
p = GPIO.PWM(12, 0.5)
p.start(1)
input('Press return to stop:')   # use raw_input for Python 2
p.stop()
GPIO.cleanup()

增亮/调暗LED的示例:

import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)
p = GPIO.PWM(12, 50)  # channel=12 frequency=50Hz
p.start(0)
try:
    while 1:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
except KeyboardInterrupt:
    pass
p.stop()
GPIO.cleanup()

9、GPIO恢复默认

    在程序的末尾,清理您可能使用的任何资源是一种很好的做法。这与RPi.GPIO没有什么不同。通过将您用过的所使用的通道返回到到无上拉/下拉输入的状态,这样可以避免短接GPIO引脚来导致意外损坏您的树莓派。请注意,这样只会清除你写的脚本中使用的GPIO通道。请注意,GPIO.cleanup()也会清除正在使用的引脚编号系统。

       在你的脚本程序的末尾写上:

GPIO.cleanup()

当您的程序退出时,可能不希望清理每个通道,而留下一些设置。您可以清理个别通道,使用通道的元组或列表做为参数输入:

GPIO.cleanup(channel)
GPIO.cleanup( (channel1, channel2) )
GPIO.cleanup( [channel1, channel2] )

10、RPi板信息和RPi.GPIO版本

发现有关您的RPi的信息:

GPIO.RPI_INFO

发现Raspberry Pi电路板版本:

GPIO.RPI_INFO [ 'P1_REVISION']
GPIO.RPI_REVISION(不建议使用)

要发现RPi.GPIO的版本:

GPIO.VERSION

11、编写一个测试程序blinkled.py

      这个测试程序控制树莓派上一GPIO 25每2秒变化一个电平,如果接一个LED灯到这个IO上面,就会看到这个灯亮2秒灭2秒。

#!/usr/bin/python#*coding:utf-8*#GPIO控制LED灯程序import RPi.GPIO as GPIOimport timepin = 25GPIO.setmode(GPIO.BCM)GPIO.setup(pin, GPIO.OUT) while True:    GPIO.output(pin, GPIO.HIGH)    time.sleep(2)    GPIO.output(pin, GPIO.LOW)    time.sleep(2) 

     在这个blinkled.py的目录中,在命令行中执行sudo python blinkled.py就可以运行此程序,LED就会一闪一闪的了

无需任何电脑,从网络安装树莓派操作系统

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

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

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

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

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

下载地址:

https://www.raspberrypi.com/software/

新的网络安装功能可直接在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 会闪烁,屏幕会变绿,新的引导加载程序成功启动。

如果你想将引导加载程序恢复到“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 运行再重新插入它们。但注意不要覆盖任何有重要工作内容的磁盘!

工业和信息化领域数据安全管理办法(试行)

(公开征求意见稿)

第一章 总则 

第一条【目的依据】为规范工业和信息化领域数据处理活动,加强数据安全管理,保障数据安全,促进数据开发利用,保护个人、组织的合法权益,维护国家安全和发展利益,根据《中华人民共和国数据安全法》《中华人民共和国网络安全法》《中华人民共和国个人信息保护法》《中华人民共和国国家安全法》《中华人民共和国民法典》等法律法规,制定本办法。 

第二条【适用范围】在中华人民共和国境内开展的工业和信息化领域数据处理活动及其安全监管,应当遵守相关法律、行政法规和本办法的要求。 

第三条【数据定义】工业和信息化领域数据包括工业数据、电信数据和无线电数据。工业数据是指工业各行业各领域在研发设计、生产制造、经营管理、运行维护、平台运营等过程中产生和收集的数据。 

电信数据是指在电信业务经营活动中产生和收集的数据。 

无线电数据是指在开展无线电业务活动中产生和收集的无线电频率、台(站)等电波参数数据。 

工业和信息化领域数据处理者是指对工业和信息化领域数据进行收集、存储、使用、加工、传输、提供、公开等数据处理活动的工业企业、软件和信息技术服务企业、取得电信业务经营许可证的电信业务经营者和无线电频率、台(站)使用单位等工业和信息化领域各类主体。 

第四条【监管机构】在国家数据安全工作协调机制统筹协调下,工业和信息化部负责督促指导各省、自治区、直辖市及计划单列市、新疆生产建设兵团工业和信息化主管部门(以下统称地方工业和信息化主管部门),各省、自治区、直辖市通信管理局(以下统称地方通信管理局)和各省、自治区、直辖市无线电管理机构(以下统称地方无线电管理机 

构)开展数据安全监管,对工业和信息化领域数据处理者的数据处理活动和安全保护进行监督管理。 

地方工业和信息化主管部门负责对本地区工业数据处理者的数据处理活动和安全保护进行监督管理。地方通信管理局负责对本地区电信数据处理者的数据处理活动和安全保护进行监督管理。地方无线电管理机构负责对本地区无线电数据处理者的数据处理活动和安全保护进行监督管理。 

工业和信息化部及地方工业和信息化主管部门、通信管理局、无线电管理机构统称为行业(领域)监管部门。 

行业(领域)监管部门依照有关法律、行政法规的规定,依法配合有关部门开展的数据安全监管相关工作。 

第五条【产业发展】行业(领域)监管部门鼓励数据开发利用和数据安全技术研究,支持推广数据安全产品和服务,培育数据安全企业、研究和服务机构,发展数据安全产业,提升数据安全保障能力,促进数据的创新应用。 

工业和信息化领域数据处理者研究、开发、使用数据新技术、新产品、新服务,应当有利于促进经济社会和行业发展,符合社会公德和伦理。 

第六条【标准制定】行业(领域)监管部门推进工业和信息化领域数据开发利用和数据安全标准体系建设,组织开展行业相关标准制修订工作。鼓励支持企业、研究机构、高等院校、行业组织等不同主体,合作开展国际标准、国家标准、行业标准、团体标准、企业标准制定。引导工业和信息化领域数据处理者开展数据管理、数据安全贯标达标工作。 

第二章 数据分类分级管理 

第七条【分类分级工作要求】工业和信息化部组织制定工业和信息化领域数据分类分级、重要数据和核心数据识别认定、数据分级防护等标准规范,指导开展数据分类分级管理工作,制定行业重要数据和核心数据具体目录并实施动态管理。 

地方工业和信息化主管部门、通信管理局、无线电管理机构组织开展本地区工业和信息化领域数据分类分级管理及重要数据和核心数据识别工作,确定本地区行业(领域)重要数据和核心数据具体目录并上报工业和信息化部,目录发生变化的,应当及时上报更新。 

工业和信息化领域数据处理者应当定期梳理数据,按照相关标准规范识别重要数据和核心数据并形成目录。 

第八条【分类分级方法】根据行业要求、特点、业务需求、数据来源和用途等因素,工业和信息化领域数据分类类别包括但不限于研发数据、生产运行数据、管理数据、运维数据、业务服务数据等。 

根据数据遭到篡改、破坏、泄露或者非法获取、非法利用,对国家安全、公共利益或者个人、组织合法权益等造成的危害程度,工业和信息化领域数据分为一般数据、重要数据和核心数据三级。 

工业和信息化领域数据处理者可在此基础上细分数据的类别和级别。 

第九条【一般数据】危害程度符合下列条件之一的数据为一般数据: 

(一)对公共利益或者个人、组织合法权益造成较小影响,社会负面影响小; 

(二)受影响的用户和企业数量较少、生产生活区域范围较小、持续时间较短,对企业经营、行业发展、技术进步和产业生态等影响较小; 

(三)其他未纳入重要数据、核心数据目录的数据。 

第十条【重要数据】危害程度符合下列条件之一的数据为重要数据: 

(一)对政治、国土、军事、经济、文化、社会、科技、电磁、网络、生态、资源、核安全等构成威胁,影响海外利益、生物、太空、极地、深海、人工智能等与国家安全相关的重点领域;

(二)对工业和信息化领域发展、生产、运行和经济利益等造成严重影响; 

(三)造成重大数据安全事件或生产安全事故,对公共利益或者个人、组织合法权益造成严重影响,社会负面影响大; 

(四)引发的级联效应明显,影响范围涉及多个行业、区域或者行业内多个企业,或者影响持续时间长,对行业发展、技术进步和产业生态等造成严重影响; 

(五)经工业和信息化部评估确定的其他重要数据。 

第十一条【核心数据】危害程度符合下列条件之一的数据为核心数据: 

(一)对政治、国土、军事、经济、文化、社会、科技、电磁、网络、生态、资源、核安全等构成严重威胁,严重影响海外利益、生物、太空、极地、深海、人工智能等与国家安全相关的重点领域; 

(二)对工业和信息化领域及其重要骨干企业、关键信息基础设施、重要资源等造成重大影响; 

(三)对工业生产运营、电信网络(含互联网)运行和服务、无线电业务开展等造成重大损害,导致大范围停工停产、大面积无线电业务中断、大规模网络与服务瘫痪、大量业务处理能力丧失等; 

(四)经工业和信息化部评估确定的其他核心数据。 

第十二条【重要数据和核心数据目录备案】工业和信息化领域数据处理者应当将本单位重要数据和核心数据目录向地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)备案。备案内容包括但不限于数据类别、级别、规模、处理目的和方式、使用范围、责任主体、对外共享、跨境传输、安全保护措施等 

基本情况,不包括数据内容本身。 

地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)应当在工业和信息化领域数据处理者提交备案申请的二十个工作日内完成审核工作,备案内容符合要求的,予以备案并发放备案凭证,同时将备案情况报工业和信息化部;不予备案的应当及时反馈备案申请人并说明理由。 

重要数据和核心数据的类别或规模变化 30%以上的,或者其它备案内容发生重大变化的,工业和信息化领域数据处 

理者应当在发生变化的三个月内履行备案变更手续。 

第三章 数据全生命周期安全管理 

第十三条【主体责任】工业和信息化领域数据处理者应当对数据处理活动负安全主体责任,对各类数据实行分级防护,不同级别数据同时被处理且难以分别采取保护措施的,应当按照其中级别最高的要求实施保护,确保数据持续处于有效保护和合法利用的状态。 

(一)建立数据全生命周期安全管理制度,针对不同级别数据,制定数据收集、存储、使用、加工、传输、提供、公开等环节的具体分级防护要求和操作规程; 

(二)根据需要配备数据安全管理人员,统筹负责数据处理活动的安全监督管理,协助行业(领域)监管部门开展工作; 

(三)合理确定数据处理活动的操作权限,严格实施人员权限管理; 

(四)根据应对数据安全事件的需要,制定应急预案,并定期进行演练; 

(五)定期对从业人员开展数据安全教育和培训; 

(六)法律、行政法规等规定的其他措施。 

工业和信息化领域重要数据和核心数据处理者,还应当: 

(一)建立覆盖本单位相关部门的数据安全工作体系,明确数据安全负责人和管理机构,建立常态化沟通与协作机制。本单位法定代表人或者主要负责人是数据安全第一责任人,领导团队中分管数据安全的成员是直接责任人; 

(二)明确数据处理关键岗位和岗位职责,并要求关键岗位人员签署数据安全责任书; 

(三)建立内部登记、审批机制,对重要数据和核心数据的处理活动进行严格管理并留存记录。 

第十四条【数据收集】工业和信息化领域数据处理者收集数据应当遵循合法、正当的原则,不得窃取或者以其他非法方式收集数据。 

数据收集过程中,应当根据数据安全级别采取相应的安全措施,加强重要数据和核心数据收集人员、设备的管理,并对收集时间、类型、数量、频度、流向等进行记录。 

通过间接途径获取重要数据和核心数据的,工业和信息化领域数据处理者应当与数据提供方通过签署相关协议、承诺书等方式,明确双方法律责任。 

第十五条【数据存储】工业和信息化领域数据处理者应当依据法律规定或者与用户约定的方式和期限存储数据。存储重要数据和核心数据的,应当采用校验技术、密码技术等措施进行安全存储,不得直接提供存储系统的公共信息网络访问,并实施数据容灾备份和存储介质安全管理,定期开展数据恢复测试。存储核心数据的,还应当实施异地容灾备份。 

第十六条【数据使用加工】工业和信息化领域数据处理者利用数据进行自动化决策分析的,应当保证决策分析的透明度和结果公平合理。使用、加工重要数据和核心数据的,还应当加强访问控制。工业和信息化领域数据处理者提供数据处理服务,涉及经营电信业务的,应当按照相关法律、行政法规规定取得电信业务经营许可。 

第十七条【数据传输】工业和信息化领域数据处理者应当根据传输的数据类型、级别和应用场景,制定安全策略并采取保护措施。传输重要数据和核心数据的,应当采取校验技术、密码技术、安全传输通道或者安全传输协议等措施。 

第十八条【数据提供】工业和信息化领域数据处理者提供数据,应当明确提供的范围、类别、条件、程序等,并与数据获取方签订数据安全协议。提供重要数据和核心数据的,应当对数据获取方数据安全保护能力进行评估或核实,采取必要的安全保护措施。 

第十九条【数据公开】工业和信息化领域数据处理者应当在数据公开前分析研判可能对公共利益、国家安全产生的影响,存在重大影响的不得公开。 

第二十条【数据销毁】工业和信息化领域数据处理者应当建立数据销毁制度,明确销毁对象、规则、流程和技术等要求,对销毁活动进行记录和留存。个人、组织依据法律规定、合同约定等请求销毁的,工业和信息化领域数据处理者应当销毁相应数据。 

销毁重要数据和核心数据的,应当及时向地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)更新备案,不得以任何理由、任何方式对销毁数据进行恢复。 

第二十一条【数据出境】工业和信息化领域数据处理者在中华人民共和国境内收集和产生的重要数据和核心数据,法律、行政法规有境内存储要求的,应当在境内存储,确需向境外提供的,应当依法依规进行数据出境安全评估。工业和信息化部根据有关法律和中华人民共和国缔结或者参加的国际条约、协定,或者按照平等互惠原则,处理外国工业、电信、无线电执法机构关于提供工业和信息化领域数据的请求。非经工业和信息化部批准,工业和信息化领域数据处理者不得向外国工业、电信、无线电执法机构提供存储于中华人民共和国境内的工业和信息化领域数据。 

第二十二条【数据转移】工业和信息化领域数据处理者因兼并、重组、破产等原因需要转移数据的,应当明确数据转移方案,并通过电话、短信、邮件、公告等方式通知受影响用户。涉及重要数据和核心数据的,应当及时向地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)更新备案。 

第二十三条【委托处理】工业和信息化领域数据处理者委托他人开展数据处理活动的,应当通过签订合同协议等方式,明确委托方与被委托方的数据安全责任和义务。委托处理重要数据和核心数据的,应当对被委托方的数据安全保护能力、资质进行评估或核实。 

除法律、行政法规等另有规定外,未经委托方同意,被委托方不得将数据提供给第三方。 

第二十四条【核心数据跨主体处理】跨主体提供、转移、委托处理核心数据的,应当评估安全风险,采取必要的安全保护措施,并经由地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)报工业和信息化部。工业和信息化部按照有关规定进行审查。 

第二十五条【日志留存】工业和信息化领域数据处理者应当在数据全生命周期处理过程中,记录数据处理、权限管理、人员操作等日志。日志留存时间不少于六个月。 

第四章 数据安全监测预警与应急管理 

第二十六条【监测预警机制】工业和信息化部建立数据安全风险监测机制,组织制定数据安全监测预警接口和标准,统筹建设数据安全监测预警技术手段,形成监测、溯源、预警、处置等能力,与相关部门加强信息共享。 

地方工业和信息化主管部门、通信管理局和无线电管理机构建设本地区数据安全监测预警机制,组织开展本地区工业、电信行业和无线电数据安全风险监测,按照有关规定及时发布预警信息,通知本地区工业和信息化领域数据处理者及时采取应对措施。 

工业和信息化领域数据处理者应当开展数据安全风险监测,及时排查安全隐患,采取必要的措施防范数据安全风险。 

第二十七条【信息上报和共享】工业和信息化部建立数据安全风险信息上报和共享机制,统一汇集、分析、研判、通报数据安全风险信息,鼓励安全服务机构、行业组织、科研机构等开展数据安全风险信息上报和共享。 

地方工业和信息化主管部门、通信管理局和无线电管理机构汇总分析本地区工业、电信行业和无线电数据安全风险,及时将可能造成重大及以上安全事件的风险上报工业和信息化部。 

工业和信息化领域数据处理者应当及时将可能造成较大及以上安全事件的风险向地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)报告。 

第二十八条【应急处置】工业和信息化部制定工业和信息化领域数据安全事件应急预案,组织协调重要数据和核心数据安全事件应急处置工作。 

地方工业和信息化主管部门、通信管理局和无线电管理机构组织开展本地区工业、电信行业和无线电数据安全事件应急处置工作。涉及重要数据和核心数据的安全事件,应当立即上报工业和信息化部,并及时报告事件发展和处置情况。 

工业和信息化领域数据处理者在数据安全事件发生后,应当按照应急预案,及时开展应急处置,涉及重要数据和核心数据的安全事件,应当第一时间向地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)报告。事件处置完成后应当在规定期限内形成总结报告,每年向地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)报告数据安全事件处置情况。 

工业和信息化领域数据处理者对可能损害用户合法权益的数据安全事件,应当及时告知用户,并提供减轻危害措施。 

第二十九条【举报投诉处理】工业和信息化部委托相关行业组织建立工业和信息化领域数据安全违法行为投诉举报渠道,地方工业和信息化主管部门、通信管理局、无线电管理机构建立本地区工业、电信行业和无线电数据安全违法行为投诉举报机制或渠道,依法接收、处理投诉举报,根据工作需要开展执法调查。鼓励工业和信息化领域数据处理者 

建立用户投诉处理机制。 

第五章 数据安全检测、认证、评估管理 

第三十条【安全检测与认证】工业和信息化部鼓励、引导具备相应资质的机构,依据相关标准开展行业数据安全检测、认证工作。 

第三十一条【安全评估】工业和信息化部制定行业数据安全评估机构管理制度,开展评估机构管理工作。制定行业数据安全评估规范,指导评估机构开展数据安全风险评估、合规评估、能力评估、出境评估等工作。 

地方工业和信息化主管部门、通信管理局和无线电管理机构负责组织开展本地区工业、电信行业和无线电数据安全评估工作。 

工业和信息化领域重要数据和核心数据处理者应当自行或委托第三方评估机构,每年至少开展一次安全评估,及时整改风险问题,并向地方工业和信息化主管部门(工业领域)或通信管理局(电信领域)或无线电管理机构(无线电领域)报送评估报告。 

第六章 监督检查 

第三十二条【监督检查和协助义务】行业(领域)监管部门对工业和信息化领域数据处理者落实本办法要求的情况进行监督检查。 

工业和信息化领域数据处理者应当对行业(领域)监管部门监督检查予以配合。 

第三十三条【数据安全审查】工业和信息化部在国家数据安全工作协调机制指导下,开展数据安全审查相关工作。 

第三十四条【保密要求】行业(领域)监管部门及其委托的数据安全评估机构工作人员对在履行职责中知悉的个人信息和商业秘密等,应当严格保密,不得泄露或者非法向他人提供。 

第七章 法律责任 

第三十五条【约谈整改】行业(领域)监管部门在履行数据安全监督管理职责中,发现数据处理活动存在较大安全风险的,可以按照规定权限和程序对工业和信息化领域数据处理者进行约谈,并要求采取措施进行整改,消除隐患。 

第三十六条【法律责任】有违反本办法规定行为的,由行业(领域)监管部门依照相关法律法规,根据情节严重程度给予没收违法所得、罚款、暂停业务、停业整顿、吊销业务许可证等行政处罚;构成犯罪的,依法追究刑事责任。 

第八章 附则 

第三十七条【个人信息保护】开展涉及个人信息的数据处理活动,还应当遵守有关法律、行政法规的规定。 

第三十八条【其他规定参照】涉及军事、国家秘密信息、密码使用等数据处理活动,按照国家有关规定执行。 

第三十九条【政务数据排除】工业和信息化领域政务数据处理活动的具体办法,由工业和信息化部另行规定。 

第四十条【国防科工、烟草领域】国防科技工业、烟草领域数据安全管理由国防科工局、国家烟草专卖局负责,具体制度参照本办法另行制定。 

第四十一条【施行日期】本办法自 2022 年 月 日起施行。

树莓派已支持直接从网络安装系统

对于刚拿到的树莓派来说,安装操作系统通常需要借助另一台电脑。但是,如果用户一开始没有另一台电脑,该怎么把操作系统安装到 SD 卡上呢?

近日,树莓派官方解决了这一问题,在最新的 Beta 版 Raspberry Pi bootloader 中,树莓派可以直接通过网络安装操作系统了。只需要一根网线,就能从互联网上下载系统并进行安装。

据官方介绍,新的网络安装功能可直接在 Raspberry Pi 4 或 Raspberry Pi 400 上启动 Raspberry Pi Imager 应用程序。Raspberry Pi Imager 应用程序将在 Raspberry Pi 的内存中运行,然后像正常情况一样,将操作系统安装到空白 SD 卡或 USB 磁盘上。

据了解,用户目前需要安装 Beta 版 Raspberry Pi bootloader 才能使用这一功能,未来将为所有树莓派出厂内置该功能。具体安装方法,可以点此查看官方教程。

性能最高提升 1400%,树莓派 32 位/64 位系统对比测试

上周,树莓派发布了用户期待已久的 64 位 Raspberry Pi OS,从理论上来说 64 位的操作系统能够更好地利用 64 位处理器所带来的优势(较新版本的树莓派已采用 64 位处理器)、可以支持 4GB 以上的内存(树莓派 4B 最高配备 8GB 内存),以及在处理多媒体内容时能够有更佳的表现。

虽然理论上是这么说,那么 32 位和 64 位在实际测试中表现如何呢?近日外媒 Phoronix 对两者进行了详细测试,让我们一起看看从 Raspberry Pi OS 32 位转换到 64 位后的测试数据和性能表现。

为了测试公平起见,消除因处理器或内存不同引起的结果差异,本次测试使用的是 Raspberry Pi 400,该设备的硬件配置如下:

  • CPU:博通 BCM2711 四核 Cortex-A72 (ARM v8) 64-bit SoC @ 1.8GHz
  • 内存:4GB LPDDR4-3200
  • 存储:SanDisk 16GB
  • 解码:H.265 (4K@60)、H.264 (1080P@60, 1080P@30)、OpenGL ES 3.0

本次测试使用的 Linux 内核版本为 5.10,测试中使用的软件包版本均相同,测试唯一的区别只是从最新的 Raspberry Pi OS 32 位切换到 64 位。

在首先进行的 WebP 图像编码测试中(分数越低越好,这是对 Google 的 libwebp 的测试,使用 cwebp 图像编码实用程序),无论是在默认编码设置下,还是在质量为 100 的编码设置下,64 位系统的编码速度比 32 位快 4.5% — 7% 左右,两者仅有较小的差距。

在接下来的 GraphicsMagick 测试中(分数越高越高,对 GraphicsMagick 及其 OpenMP 实现的测试),32 位和 64 位的测试成绩就有了比较明显的差别,其中在进行 HWB 色彩空间测试时两者差距最大,64 位相比 32 位快了约 47%,而在进行 Swirl 操作时也有约 32% 的性能差距。除此之外,在进行旋转、锐化和高斯噪声处理时,也有 17% — 28% 左右的性能差距。

在 FLAC 音频编码测试中(分数越低越好,计算示例 WAV 文件编码为 FLAC 格式所需的时间64 位比 32 位也提升了约 17%LAME MP3 编码测试中(分数越低越好,计算将 WAV 文件编码为 MP3 格式所需的时间),64 位提升了约 43%。

在前面的测试中也能看出,64 位相比 32 位在某些测试场景下有了 40% 以上的性能提升,而在 Stress-NG 测试中(分数越高越好,Stress-NG 是 Linux 压力测试工具,可以对 CPU、Memory、IO、磁盘进行测试),两者的性能差距更是进一步被放大,其中在 Vector Math 中 64 位的性能提升幅度达到了约 232%;在 Glibc C String Functions 测试中,也提升了约 196%。

除了多媒体编码和系统的压力测试以外,也专门对 Python 和 PHP 的性能进行了测试。其中在 PyBench 测试中(分数越低越好,PyBench 报告了不同函数的平均测试时间,提供了对 Python 在系统上的平均性能的估计64 位相比 32 位提升了约 13%;而在 PHPBench 测试中(分数越高越好,PHPBench 执行大量测试,以便对 PHP 解释器的各个方面进行评估),64 位性能则是提升了约 54%。

虽然上述的测试结果已经表明在同等测试环境下,64 位操作系统的性能相比 32 位有了大幅提升,但这还不是所有测试环节中性能差距的最大体现。

在 Sysbench 测试中(分数越高越好,Sysbench 是一个基于 LuaJIT 的多线程基准测试工具,专门测试 CPU 和内存),64 位处理器 + 64 位操作系统的优势被最大化,64 位的性能提升幅度达到了惊人的 1380%

我们在这里仅仅是从几十种不同的负载测试中挑出了一些具有代表性的测试,但纵观全部测试结果,将 Raspberry Pi OS 切换至 64 位版本后,其平均性能提高了约 48%。想要查看所有测试数据的用户可以访问 Phoronix 官网。

相比其他的 Linux 发行版,Raspberry Pi OS 直到现在才推出 64 位系统,确实是姗姗来迟。但从测试结果来看,64 位系统这么大的提升幅度让用户也没有白等。看到这里你

添加AppImage程序到Ubuntu桌面

ubuntu下将appimage程序添加到桌面,下面以fritzing0.9.9版本为例,该版本没有提供deb或其它安装方式,如需添加到桌面,可按下列方式进行:

新建一个文件fritz.desktop
sudo nano ~/.local/share/applications/fritz.desktop
输入以下内容
[Desktop Entry]
Encoding=UTF-8
Name=fritz
Exec=/home/peter/下载/fritzing-0.9.9-l348-f0af53a9.appimage
Icon=/home/peter/下载/Empty.ico
Terminal=false
Type=Application
Categories=Internet;
原firtzing0.9.6的设置
~/.local/share/applications$ cat org.fritzing.Fritzing.desktop
[Desktop Entry]
Name=Fritzing
GenericName=Electronic Design Automation software
GenericName[fi]=Elektroniikan suunnitteluohjelma
GenericName[ru]=Программа проектирования электроники
Comment=Create circuits and lay out printed circuit boards
Comment[fi]=Suunnittele elektronisia kytkentöjä ja piirilevyjä
Comment[ru]=Создавайте схемы и выкладывайте печатные платы
Exec=Fritzing %F
Icon=/home/peter/.local/share/icons/hicolor/128x128/apps/fritzing.png
Terminal=false
Type=Application
Categories=Development;IDE;Electronics;
Keywords=EDA;PCB;prototype;circuit;schematic;
StartupNotify=true
MimeType=application/x-fritzing-fz;application/x-fritzing-fzz;application/x-fritzing-fzp;application/x-fritzing-fzpz;application/x-fritzing-fzb;application/x-fritzing-fzbz;application/x-fritzing-fzm;

将树莓派CM4的WiFi天线配置为外置天线

树莓派 CM4 带 WiFi 的型号除了在 PCB 上内置了天线之外,还预留了一个天线插座,用于安插外置天线。有的用户在安装了外置天线之后,发现 WiFi 信号并没有改善,这可能是因为还没有手动将 CM4 的天线从内置的 PCB 天线切换到外置天线上。

CM4 在设计时考虑到兼容性,出厂默认系统是选用的内置 PCB 天线。下面来介绍如何进行设置,切换到外置 WiFi 天线。

硬件准备

CM4 + CM4IO 开发板 X 1
树莓派 CM4 天线(Antenna Kit) X 1

编辑 /boot/config.txt 文件。

sudo nano /boot/config.txt

在文件末尾加入一行配置:

dtparam=ant2

然后重启 CM4 让配置生效即可。

自定义树莓派开机画面

https://blog.csdn.net/aphero/article/details/43124689

https://www.freesion.com/article/3137879416/

https://www.pianshen.com/article/22171676330/

https://www.cnblogs.com/gzggyy/archive/2012/08/07/2626574.html

https://www.jianshu.com/p/dcddafcaeab2

启动时去掉树莓派logo、打印信息等,只需要修改boot下的cmdline.txt,具体如下:
sudo nano /boot/cmdline.txt
-将“console=tty1”替换为“console=tty3”,将引导消息重定向到第三控制台-添加“loglevel=3”以禁用非关键内核日志消息,如果文本光标也需要隐藏,那么在/boot/cmdline.txt文件中添加“vt.global_cursor_default=0”。
logo.nologo 作用: 去掉raspberry Logo
更改后,要进入控制台,只需在引导过程中或引导后按Alt+F3。