关注数: 3 粉丝数: 112 发帖数: 3,308 关注贴吧数: 12
ROC-RK3566-PC开发板GPIO口的驱动操作 2.1. 简介 GPIO, 全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚。 所有的 GPIO 在上电后的初始状态都是输入模式,可以通过软件设为上拉或下拉,也可以设置为中断脚,驱动强度都是可编程的,其核心是填充 GPIO bank 的方法和参数,并调用 gpiochip_add 注册到内核中。 ROC-RK3566-PC 开发板为了方便用户开发使用,引出了一排扩展的GPIO口供用户调试和开发。 本文以 GPIO0_B4 和 GPIO4_D5 这两个 GPIO 口为例写了一份简单操作 GPIO 口的驱动,在 SDK 的路径为:kernel/drivers/gpio/gpio-firefly.c,以下就以该驱动为例介绍 GPIO 的操作。 2.2. GPIO引脚计算 ROC-RK3566-PC 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分,常用以下公式计算引脚: GPIO pin脚计算公式:pin = bank * 32 + number GPIO 小组编号计算公式:number = group * 8 + X 下面演示GPIO4_D5 pin脚计算方法: bank = 4; //GPIO4_D5 => 4, bank ∈ [0,4] group = 3; //GPIO4_D5 => 3, group ∈ {(A=0), (B=1), (C=2), (D=3)} X = 5; //GPIO4_D5 => 5, X ∈ [0,7] number = group * 8 + X = 3 * 8 + 5 = 29 pin = bank*32 + number= 4 * 32 + 29 = 157; GPIO4_D5 对应的设备树属性描述为:<&gpio4 29 IRQ_TYPE_EDGE_RISING>,由kernel/include/dt-bindings/pinctrl/rockchip.h的宏定义可知,也可以将GPIO4_D5描述为<&gpio4 RK_PD5 IRQ_TYPE_EDGE_RISING>。 #define RK_PA0 0 #define RK_PA1 1 #define RK_PA2 2 #define RK_PA3 3 #define RK_PA4 4 #define RK_PA5 5 #define RK_PA6 6 #define RK_PA7 7 #define RK_PB0 8 #define RK_PB1 9 #define RK_PB2 10 #define RK_PB3 11 ...... 当GPIO4_D5脚没有被其它外设复用时, 我们可以通过export导出该引脚去使用 :/ # ls /sys/class/gpio/ export gpiochip128 gpiochip32 gpiochip64 unexport gpiochip0 gpiochip255 gpiochip500 gpiochip96 :/ # echo 157 > /sys/class/gpio/export :/ # ls /sys/class/gpio/ export gpiochip0 gpiochip255 gpiochip500 gpiochip96 gpio157 gpiochip128 gpiochip32 gpiochip64 unexport :/ # ls /sys/class/gpio/gpio157 active_low device direction edge power subsystem uevent value :/ # cat /sys/class/gpio/gpio157/direction in :/ # cat /sys/class/gpio/gpio157/value 0 2.3. 输入输出 首先在 DTS 文件中增加驱动的资源描述: kernel/arch/arm64/boot/dts/rockchip/rk356x-firefly-demo.dtsi gpio_demo: gpio_demo { status = "okay"; compatible = "firefly,rk356x-gpio"; firefly-gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>; /* GPIO0_B4 */ firefly-irq-gpio = <&gpio4 29 IRQ_TYPE_EDGE_RISING>; /* GPIO4_D5 */ }; 这里定义了一个脚作为一般的输出输入口: firefly-gpio GPIO0_B4 GPIO_ACTIVE_HIGH 表示高电平有效,如果想要低电平有效,可以改为:GPIO_ACTIVE_LOW,这个属性将被驱动所读取。 然后在 probe 函数中对 DTS 所添加的资源进行解析,代码如下: static int firefly_gpio_probe(struct platform_device *pdev) { int ret; int gpio; enum of_gpio_flags flag; struct firefly_gpio_info *gpio_info; struct device_node *firefly_gpio_node = pdev->dev.of_node; printk("Firefly GPIO Test Program Probe "); gpio_info = devm_kzalloc(&pdev->dev,sizeof(struct firefly_gpio_info *), GFP_KERNEL); if (!gpio_info) { return -ENOMEM; } gpio = of_get_named_gpio_flags(firefly_gpio_node, "firefly-gpio", 0, &flag); if (!gpio_is_valid(gpio)) { printk("firefly-gpio: %d is invalid ", gpio); return -ENODEV; } if (gpio_request(gpio, "firefly-gpio")) { printk("gpio %d request faiLED! ", gpio); gpio_free(gpio); return -ENODEV; } gpio_info->firefly_gpio = gpio; gpio_info->gpio_enable_value = (flag == OF_GPIO_ACTIVE_LOW) ? 0:1; gpio_direction_output(gpio_info->firefly_gpio, gpio_info->gpio_enable_value); printk("Firefly gpio putout "); ... } of_get_named_gpio_flags 从设备树中读取 firefly-gpio 和 firefly-irq-gpio 的 GPIO 配置编号和标志,gpio_is_valid 判断该 GPIO 编号是否有效,gpio_request 则申请占用该 GPIO。如果初始化过程出错,需要调用 gpio_free 来释放之前申请过且成功的 GPIO 。在驱动中调用 gpio_direction_output 就可以设置输出高还是低电平,这里默认输出从 DTS 获取得到的有效电平 GPIO_ACTIVE_HIGH,即为高电平,如果驱动正常工作,可以用万用表测得对应的引脚应该为高电平。实际中如果要读出 GPIO,需要先设置成输入模式,然后再读取值: int val; gpio_direction_input(your_gpio); val = gpio_get_value(your_gpio); 下面是常用的 GPIO API 定义: #include <linux/gpio.h> #include <linux/of_gpio.h> enum of_gpio_flags { OF_GPIO_ACTIVE_LOW = 0x1, }; int of_get_named_gpio_flags(struct device_node *np, const char *propname, int index, enum of_gpio_flags *flags); int gpio_is_valid(int gpio); int gpio_request(unsigned gpio, const char *label); void gpio_free(unsigned gpio); int gpio_direction_input(int gpio); int gpio_direction_output(int gpio, int v); 2.4. 中断 在 Firefly 的例子程序中还包含了一个中断引脚,GPIO 口的中断使用与 GPIO 的输入输出类似,首先在 DTS 文件中增加驱动的资源描述: kernel/arch/arm64/boot/dts/rockchip/rk356x-firefly-demo.dtsi gpio { compatible = "firefly-gpio"; firefly-irq-gpio = <&gpio4 29 IRQ_TYPE_EDGE_RISING>; /* GPIO4_D5 */ }; IRQ_TYPE_EDGE_RISING 表示中断由上升沿触发,当该引脚接收到上升沿信号时可以触发中断函数。 这里还可以配置成如下: IRQ_TYPE_NONE //默认值,无定义中断触发类型 IRQ_TYPE_EDGE_RISING //上升沿触发 IRQ_TYPE_EDGE_FALLING //下降沿触发 IRQ_TYPE_EDGE_BOTH //上升沿和下降沿都触发 IRQ_TYPE_LEVEL_HIGH //高电平触发 IRQ_TYPE_LEVEL_LOW //低电平触发 然后在 probe 函数中对 DTS 所添加的资源进行解析,再做中断的注册申请,代码如下: static int firefly_gpio_probe(struct platform_device *pdev) { int ret; int gpio; enum of_gpio_flags flag; struct firefly_gpio_info *gpio_info; struct device_node *firefly_gpio_node = pdev->dev.of_node; ... gpio_info->firefly_irq_gpio = gpio; gpio_info->firefly_irq_mode = flag; gpio_info->firefly_irq = gpio_to_irq(gpio_info->firefly_irq_gpio); if (gpio_info->firefly_irq) { if (gpio_request(gpio, "firefly-irq-gpio")) { printk("gpio %d request failed! ", gpio); gpio_free(gpio); return IRQ_NONE; } ret = request_irq(gpio_info->firefly_irq, firefly_gpio_irq, flag, "firefly-gpio", gpio_info); if (ret != 0) free_irq(gpio_info->firefly_irq, gpio_info); dev_err(&pdev->dev, "Failed to request IRQ: %d ", ret); } return 0; } static irqreturn_t firefly_gpio_irq(int irq, void *dev_id) //中断函数 { printk("Enter firefly gpio irq test program! "); return IRQ_HANDLED; } 调用 gpio_to_irq 把 GPIO 的 PIN 值转换为相应的 IRQ 值,调用 gpio_request 申请占用该 IO 口,调用 request_irq 申请中断,如果失败要调用 free_irq 释放,该函数中 gpio_info-firefly_irq 是要申请的硬件中断号,firefly_gpio_irq 是中断函数,gpio_info->firefly_irq_mode 是中断处理的属性,firefly-gpio 是设备驱动程序名称,gpio_info 是该设备的 device 结构,在注册共享中断时会用到。 2.5. 复用 GPIO 口除了通用输入输出、中断功能外,还可能有其它复用功能,如GPIO0_B4, 就有如下几个功能:那么在使用作GPIO口时,就需要注意是否被复用为其他功能了,这里可以用io命令查看iomux来判断是否复用,在调试方法的章节中有相关说明,这里不多作说明。 假如通过io命令发现GPIO0_B4有复用作I2C1_SDA,使用GPIO0_B4作gpio或者其他功能时就需要将I2C1 disabled掉。 &i2c1 { status = "disabled"; }; gpio_demo: gpio_demo { status = "okay"; compatible = "firefly,rk356x-gpio"; firefly-gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>; /* GPIO0_B4 */ firefly-irq-gpio = <&gpio4 29 IRQ_TYPE_EDGE_RISING>; /* GPIO4_D5 */ }; Note: 此处GPIO0_B4仅作示例,实际使用中不推荐如此修改 上面介绍了在DTS上修改,那在运行时又如何切换功能呢?下面以 I2C4_m0 为例作简单的介绍,详细介绍可以参考RKDocs/common/PIN-Ctrl/Rockchip-Developer-Guide-Linux-Pin-Ctrl-CN.pdf。 查规格表可知,I2C4_SDA_M0 与 I2C4_SCL_M0 的功能定义如下:在 kernel/arch/arm64/boot/dts/rockchip/rk3568.dtsi 里有: i2c4: i2c@fe5d0000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xfe5d0000 0x0 0x1000>; clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>; clock-names = "i2c", "pclk"; interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; pinctrl-names = "default", "gpio"; pinctrl-0 = <&i2c4m0_xfer>; pinctrl-1 = <&i2c4mo_gpio>; //此处源码未添加 #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; 跟复用控制相关的是 pinctrl- 开头的属性: pinctrl-names 定义了状态名称列表: default (i2c 功能) 和 gpio 两种状态。 pinctrl-0 定义了状态 0 (即 default)时需要设置的 pinctrl: &i2c4m0_xfer pinctrl-1 定义了状态 1 (即 gpio)时需要设置的 pinctrl: &i2c4mo_gpio 这些 pinctrl 在 kernel/arch/arm64/boot/dts/rockchip/rk3568-pinctrl.dtsi 中这样定义: pinctrl: pinctrl { compatible = "rockchip,rk3568-pinctrl"; rockchip,gRF = <&grf>; rockchip,pmu = <&pmugrf>; #address-cells = <2>; #size-cells = <2>; ranges; i2c4 { /omit-if-no-ref/ i2c4m0_xfer: i2c4m0-xfer { rockchip,pins = /* i2c4_sclm0 */ <4 RK_PB3 1 &pcfg_pull_none_SMT>, /* i2c4_sdam0 */ <4 RK_PB2 1 &pcfg_pull_none_smt>; }; }; // 此处源码未添加,仅作示例 gpio { /omit-if-no-ref/ i2c4m0_gpio: i2c4m0-gpio { rockchip,pins = <4 RK_PB2 0 &pcfg_pull_none>, <4 RK_PB3 0 &pcfg_pull_none>; }; }; }; RK_FUNC_1,RK_FUNC_GPIO 的定义在 kernel/include/dt-bindings/pinctrl/rockchip.h ,此处简写作0和1: #define RK_FUNC_GPIO 0 #define RK_FUNC_1 1 #define RK_FUNC_2 2 #define RK_FUNC_3 3 #define RK_FUNC_4 4 #define RK_FUNC_5 5 #define RK_FUNC_6 6 #define RK_FUNC_7 7 在复用时,如果选择了 default (即 i2c 功能),系统会应用 i2c4m0_xfer 这个 pinctrl,最终将 GPIO4_B2 和 GPIO4_B3 两个针脚切换成对应的 i2c 功能;而如果选择了 gpio ,系统会应用 i2c4m0_gpio 这个 pinctrl,将 GPIO4_B2 和 GPIO4_B3 两个针脚还原为 GPIO 功能。 我们看看如下 i2c 的驱动程序是如何切换复用功能的: static int rockchip_i2c_probe(struct platform_device *pdev) { struct rockchip_i2c *i2c = NULL; struct resource *res; struct device_node *np = pdev->dev.of_node; int ret;// ... i2c->sda_gpio = of_get_gpio(np, 0); if (!gpio_is_valid(i2c->sda_gpio)) { dev_err(&pdev->dev, "sda gpio is invalid "); return -EINVAL; } ret = devm_gpio_request(&pdev->dev, i2c->sda_gpio, dev_name(&i2c->adap.dev)); if (ret) { dev_err(&pdev->dev, "failed to request sda gpio "); return ret; } i2c->scl_gpio = of_get_gpio(np, 1); if (!gpio_is_valid(i2c->scl_gpio)) { dev_err(&pdev->dev, "scl gpio is invalid "); return -EINVAL; } ret = devm_gpio_request(&pdev->dev, i2c->scl_gpio, dev_name(&i2c->adap.dev)); if (ret) { dev_err(&pdev->dev, "failed to request scl gpio "); return ret; } i2c->gpio_state = pinctrl_lookup_state(i2c->dev->pins->p, "gpio"); if (IS_ERR(i2c->gpio_state)) { dev_err(&pdev->dev, "no gpio pinctrl state "); return PTR_ERR(i2c->gpio_state); } pinctrl_select_state(i2c->dev->pins->p, i2c->gpio_state); gpio_direction_input(i2c->sda_gpio); gpio_direction_input(i2c->scl_gpio); pinctrl_select_state(i2c->dev->pins->p, i2c->dev->pins->default_state); ... } 首先是调用 of_get_gpio 取出设备树中 i2c4 结点的 gpios 属于所定义的两个 gpio: gpios = <&gpio1 GPIO_B3 GPIO_ACTIVE_LOW>, <&gpio1 GPIO_B4 GPIO_ACTIVE_LOW>; 然后是调用 devm_gpio_request 来申请 gpio,接着是调用 pinctrl_lookup_state 来查找 gpio 状态,而默认状态 default 已经由框架保存到 i2c->dev-pins->default_state 中了。 最后调用 pinctrl_select_state 来选择是 default 还是 gpio 功能。 下面是常用的复用 API 定义: #include <linux/pinctrl/consumer.h> struct device { //... #ifdef CONFIG_PINCTRL struct dev_pin_info *pins; #endif //... }; struct dev_pin_info { struct pinctrl *p; struct pinctrl_state *default_state; #ifdef CONFIG_PM struct pinctrl_state *sleep_state; struct pinctrl_state *idle_state; #endif }; struct pinctrl_state * pinctrl_lookup_state(struct pinctrl *p, const char *name); int pinctrl_select_state(struct pinctrl *p, struct pinctrl_state *s); 2.6. FAQs 2.6.1. Q1: 如何将 PIN 的 MUX 值切换为一般的 GPIO? A1: 当使用 GPIO request 时候,会将该 PIN 的 MUX 值强制切换为 GPIO,所以使用该 PIN 脚为 GPIO 功能的时候确保该 PIN 脚没有被其他模块所使用。 2.6.2. Q2: 为什么我用 IO 指令读出来的值都是 0x00000000? A2: 如果用 IO 命令读某个 GPIO 的寄存器,读出来的值异常,如 0x00000000 或 0xffffffff 等,请确认该 GPIO 的 CLK 是不是被关了,GPIO 的 CLK 是由 CRU 控制,可以通过读取 datasheet 下面 CRU_CLKGATE_CON* 寄存器来查到 CLK 是否开启,如果没有开启可以用 io 命令设置对应的寄存器,从而打开对应的 CLK,打开 CLK 之后应该就可以读到正确的寄存器值了。 2.6.3. Q3: 测量到 PIN 脚的电压不对应该怎么查? A3: 测量该 PIN 脚的电压不对时,如果排除了外部因素,可以确认下该 PIN 所在的 IO 电压源是否正确,以及 IO-Domain 配置是否正确。 2.6.4. Q4: gpio_set_value() 与 gpio_direction_output() 有什么区别? A4: 如果使用该 GPIO 时,不会动态的切换输入输出,建议在开始时就设置好 GPIO 输出方向,后面拉高拉低时使用 gpio_set_value() 接口,而不建议使用 gpio_direction_output(), 因为 gpio_direction_output 接口里面有 mutex 锁,对中断上下文调用会有错误异常,且相比 gpio_set_value,gpio_direction_output 所做事情更多,浪费。 原作者:Firefly Wiki
瑞芯微RK3566电子纸应用方案优势详解 一、超低功耗,RK3566全方位提升硬件效能 相对于采用LCD、OLED等屏幕的电子产品,使用电子纸显示屏有着功耗更低、续航时间更长的巨大优势。从与数款市面上热销6寸及10.3寸电子书产品的功耗测试对比图中可发现,搭载RK3566的产品功耗更低,表现更优异。 以RK3566为主控的6英寸,搭载Android 11,分辨率1024x758的电子书,休眠耗电小于1mA,15s翻页一次耗电小于30mA,1s翻页一次约为130mA,静态界面功耗小于10mA,比同类产品的待机界面功耗降低超过70%。搭载RK3566的10.3英寸大屏,Android 11系统,分辨率1872x1404,带手写笔的电子书,休眠耗电只需约1.2mA,静态界面功耗小于15mA,15s翻页一次耗电小于50mA,1s翻页约为180mA,持续手写功耗约280mA,比同类可手写电子书手写功耗降低近40%。为降低功耗,针对电子纸应用产品,瑞芯微在显示架构,系统任务管理,电源管理,硬件设计等方面对RK3566方案进行了深度优化。其中,使用LPDDR4X颗粒,VCC_DDR部分的功耗可节省40%。此外,RK3566支持Touch Panel Low Power Mode(触摸屏低功耗模式),更有效降低产品功耗。 二、成本最优化,RK3566自带TCON接口 RK3566自带TCON-EBC,终端伙伴无需额外增加电子纸显示屏控制芯片,成本大幅降低。同时,最大分辨率支持13.3英寸的2200x1650,满足大屏电子纸应用的痛点诉求。可支持局部刷新和全局刷新,更好地处理残影及清晰度不佳等问题,能够带来更优的视觉体验。 三、手写延迟率降低,RK3566自研硬件加速模块 RK3566基于自研的硬件加速模块,有效降低手写延迟率,手写速度提升20%,流畅书写,视觉体验更佳。 四、赋能丰富AI应用,RK3566内置性能强大NPU RK3566内置的NPU,为产品赋能丰富的AI应用,包括智能文字识别/查词、OCR笔记摘录、OCR查词(包括图片中文字,如扫描的书籍及国外漫画)、拍题搜题、漫画自动分格子及缩放选中区域等。 基于自研的算法优势,RK3566支持VOP2 Writeback功能,可实现电子书/办公本彩色投屏,智能办公更便捷;拥有多MIC降噪算法,拾音更精准,语音笔记品质有保证。 五、优化系统消耗,RK3566支持轻量化Android/Linux OS RK3566支持专用于电子纸应用的轻量化Android/Linux OS,优化任务调度,减少系统CPU消耗,还可减少内存使用、提升系统流畅性,并保证应用的兼容性。 现如今,用户对于电子纸的使用需求已远不止阅读电子书这么单一,应用场景的不断延伸,性能优化及功能扩展迫在眉睫。瑞芯微RK3566芯片的推出,将凭借硬核性能,全方位助力下游合作伙伴打造更具市场竞争力的产品。
Firefly云手机服务器远程挂载操作系统 在Firefly云手机服务器中,是采用核心板集群的方式让用户拥有多台真实手机。但每个核心板都需要安装固定的操作系统,如果要对系统进行变更,则需要对核心板重新烧录固件安装系统。安装的过程繁琐,而且时间长,用户的数据也无法自动保留。 该方案可让用户通过网络即可远程挂载操作系统,并且在切换或退出系统时可实时通过网络进行回写储存数据,用户不需要对核心板重新烧录系统,可代替之前繁琐的步骤。该方案是通过NFS(Network File System)网络文件系统从而实现了远程挂载操作系统。 例如:用户可把系统文件集中放置在NFS远程服务器上,通过这个技术,则可以远程挂载该服务器上所放置的系统并启动。在这个过程中无需对本地的核心板硬件进行烧写操作,用户的数据空间也不再受到核心板自身的ROM的大小而限制,同时也能随时无缝的切换想要的操作系统。(远程服务器的系统挂载到本地设备上) 方案特点 (1)远程挂载系统,不需重装系统 用户需要对核心板更换系统时,只需要通过BMC管理后台,即可实现远程挂载,不需要重新安装系统,便于统一管理多个操作系统。(例如Android更换为Ubuntu,不需要重装系统) (2)无缝更换系统,容纳更多用户使用 通过Firefly自研的“无缝切换”技术,当硬件资源(核心板)空闲时,便能把上一个用户的系统自动快速更换为下一个用户的系统,分配给下一个用户使用,不用局限于硬件资源(核心板)的数量,从而容纳更多的用户。(职员B结束使用后,立即释放硬件并无缝切换为职员F的系统) (3)数据隔离,安全可靠 用户之间不共享硬件资源和系统,数据完全隔离,其他用户无法访问和使用你的数据,增强了安全性和独立性。(用户A与用户B的数据不能互相访问) (4)开放接口,二次开发 提供远程加载的技术接口,方便用户二次开发,可以满足不同场景的应用需求。(用户可二次开发) 应用广泛 可应用于企业云办公、企业私有云、数据存储、加密办公、电商运营、直播互动等场景。
a&s对话瑞芯微:解开新一代机器视觉方案的面纱 近日,瑞芯微电子股份有限公司(以下简称“瑞芯微”)正式发布新一代机器视觉方案RV1106及RV1103,两颗芯片在NPU、ISP、视频编码、音频处理等性能均有显著升级,具有高集成度、高性价比、低待机功耗的特点。借此机会,a&s采访到瑞芯微产品市场中心张帅,围绕着新一代机器视觉方案进行深度交流。 完善产品矩阵 全球研究机构MarketsandMarkets最新发布的研究报告显示,2020全球机器视觉市场规模为107亿美元,到2025年,该市场将增长至127亿美元.预测期内(2020—2025年)的年复合增长率为13.6%。从产品形态来看,机器视觉技术通常以,基于PC的视觉系统和基于智能摄像机的视觉系统两种形态进行展现。在预测期内,基于智能摄像机的机器视觉系统预计将以更快的速度增长。针对此,瑞芯微在RV1126和RV1109两款产品大获成功的基础上,进一步发力下沉市场,完善产品矩阵。“瑞芯微推出的普惠型机器视觉方案RV1106及RV1103,旨在助力更多行业伙伴高效实现机器视觉产品的研发及落地。”张帅说道。 张帅表示,作为国内知名半导体企业,当前瑞芯微正致力于打造多场景计算单元SoC,在NPU,ISP图像处理、视频编解码、算法、大系统开发上积累丰富经验,已形成多层次、多平台的专业解决方案。通过深挖机器视觉产品痛点,及不同应用场景需求,瑞芯微凭借技术优势,将极大优化终端产品性能,提升终端产品的市场竞争力。 六大优势普惠机器视觉 清华大学交叉信息研究院院长姚期智认为,AI 芯片发展在短期内是以一流计算为主要,加速各类应用算法的落地。这与瑞芯微的发展方向不谋而合,张帅表示,为了满足多种机器视觉场景的需求,瑞芯微在机器视觉前端产品的打磨上,在以下6个维度下足功夫:1、内置自研第4代NPU,最高达0.5TOPs算力 RV1106及RV1103采用Cortex-A7 CPU 及高性能MCU,内置瑞芯微自研第4代NPU,运算精度高,支持int4、in8、int16混合量化,其中int8算力为0.5TOPs,int4算力可达1.0TOPs; 2、内置自研第3代ISP3.2,支持多种图像处理技术 RV1106及RV1103采用瑞芯微自研第3代ISP3.2,分别支持500万及400万像素,支持HDR、WDR、多级降噪等多种图像增强和矫正算法,在各类复杂光线场景,可实现黑光全彩、逆光强光拍摄画面效果清晰可见。RV1106及RV1103可支持2-3路MIPI/DVP输入,是经济型双目视觉产品优选方案; 3、编码能力强,高帧率、低码率、占用空间小 4、智能音频,声音录制更清晰 5、快速启动瞬时响应,高性能低功耗 RV1106及RV1103内置RISC-V MCU的设计,支持低功耗快速启动,支持250ms快速抓图,并同时加载AI模型库,可实现“1秒内”完成人脸识别; 6、高集成度 RV1106以及RV1103内置Audio codec、MAC PHY、RTC等,提供内置DDR的QFN封装以及无内置DDR的BGA封装。 张帅总结,作为瑞芯微新一代普惠型机器视觉方案方案,RV1106及RV1103凭借其全新升级的性能表现,将会助力机器视觉、汽车电子、新零售、智能办公教育类行业伙伴有效提升产品核心竞争力。 后 记 瑞芯微始终秉持用“芯”做好产品的宗旨,张帅表示 “要做好一颗 SoC 芯片并非简单堆叠,我们在内核、算法、系统软件上都投入了很多研发力量。我们自研的NPU和ISP已经分别升级到第三代和第四代,更好地满足市场对AIoT产品的性能需求,而此次我们更将自研的IVE(智能视频引擎)应用到RV1106和RV1103,帮助客户实现硬件模块的性能提升,可以更好地支持各种智能分析功能。” 瑞芯微等AIoT芯片厂商在人工智能芯片及机器视觉层面的持续发力,让人工智能与智慧视觉商用成为了现实。在接下来的时间中,我们期待各类智能视觉产品的推出为工作和生活带来的便利和高效。
瑞芯微RK3588和RK3588S芯片异同 RK3588是瑞芯微最新推出的八核旗舰芯片,专为8K场景应用设计,性能十分出色,可广泛应用于ARM集群服务器、边缘计算、视频编解码、车载电子、PC等领域。RK3588的拓展接口也十分丰富,非常适合行业产品定制。RK3588S是RK3588的低配版,其区别类似RK3568跟RK3566的区别,设计框架基本一致,面向的细分领域不同。RK3588可以说是目前接口最丰富的通用型ARM SoC芯片,芯片性能也十分均衡,视频解码能力十分突出,在影音领域将会有广泛的应用,丰富的接口也十分适合行业客户的定制开发。因此,RK3588是面向高端的行业应用,而RK3588S框架和RK3588类似,但是接口较少,主要面向消费类的产品。RK3588S的视频输入输出接口,type-c接口,SATA接口,RJ45网口均比RK3588少,并且RK3588S不支持PCI-E拓展,这使得二者的定位明显的区分。 考虑到RK3588跟RK3588S的堆叠设计比较复杂,建议大家多考虑核心板加底板的产品形态,推荐使用B2B连接器,目前连接器合高已经可以控制到0.4mm,连接器本身对PCBA的厚度影响已经很小。核心板产品对降低多项目的开发成本,包括后期的库存成本都有很大的作用。 RK3588封装尺寸为23*23mm,RK3588S封装尺寸为17*17mm。RK3588更适合对产品体积限制不大的行业用品,RK3588S则更适合便携式设备。总的来说,RK3588跟RK3588S二者的性能是一致的,如果使用场景比较单一,对接口要求并不复杂,建议考虑RK3588S,这样可以有效控制成本。反之,如果是需要跨场景使用,对接口要求比较复杂的产品,建议首选RK3588。以RK3588的性能设计来看,可以满足未来五年的迭代需求,非常适合AIoT应用。
基于SD510-RK3568的Debian 10嵌入式系统开发调试 SD510是ScenSmart推出的基于瑞芯微RK3568芯片方案的全功能评估开发板,将主控的所有功能接口拉出,主要用于RK3568的芯片性能评估和技术验证。本项目为基于SD510-RK3568的Debian 10系统调试,交付BSP固件。Debian是一个完全开源的操作系统,由来自全球的社区程序员维护。Ubuntu、Chromium OS、Google Chrome OS等操作系统均基于Debian开发。在当前形势下,不少行业客户已经开始将业务迁移至Linux系统,再加上QT、Python、FFMpeg等软件在Linux平台的优异表现,越来越多的开发者开始向Linux平台转移。Debian拥有丰富的软件包,而且大多数软件都是免费的,用户使用起来十分方便。Debian作为完全免费的操作系统,深受商业用户青睐。目前Linux系统依然是效率最高的操作系统,占用硬件资源少,在服务器、人工智能、嵌入式系统等领域的应用十分广泛。结合RK3568丰富的功能接口,SD510可应用的行业十分广泛。并且RK3568支持全链路的ECC校验,可满足特殊行业的高标准要求。RK3568是一颗万金油型的SoC,适合多种行业场景,作为评估开发板,SD510将这一特点充分体现。SD510充分发挥了RK3568的编解码能力,配有HDMI视频转接板,可以取代海思芯片在视频编解码场景下的应用。SD510支持5G数据模块,可满足高清直播、XR混合现实等数据高速传输的应用。SD510自带0.8TOPS独立NPU,并且支持AI加速模块,可作为AI边缘计算设备使用。SD510支持CAN数据通讯,可用于车载电子,支持CVR、中控车机、支持ADAS(前车预警)、DMS(驾驶员疲劳检测)、BSD(盲区检测算法)等功能开发。
瑞芯微RK3399电视盒子方案配套特征料简介 1、 电源管理芯片: RK3399的PMU不像之前推出的几款主控,例如RK3188/3288的PMU可在多种品牌之间自由选择搭配。此次RK3399方案瑞芯微给出的参考设计都是搭配的自身研发的芯片,RK818-3或者RK808-D,两者的区别是RK818-3具有自动充电功能。据瑞芯微给出的原始BOM,可看出RK818是与VR产品搭配,而RK808是与盒子/平板产品搭配使用。 2、 可I2C编程控制,同步降压DC-DC: SYR837/ SYR838是矽立杰SILERGY推出的两款高效的2.4MHz同步降压DC / DC稳压器,能够提供高达6A的输出电流;输入电压范围为2.6V至5.5V,输出电压通过I2C接口编程可从0.7125V到1.5V。; 3、 大电流固定电压输出,同步降压DC/DC: NB679/NB680是MPS推出的两款高电流8A(峰值10A)、固定电压输出5V/3.3V、宽电压输入4.8-26V的同步降压DC-DC转换器,其中NB679输出5V/8A,,NB680输出3.3V/8A。 4、 千兆以太网收发器: 瑞昱ReaLTEk的RTL8211E-VB-CG是符合10Base-T,100Base-TX和1000Base-T IEEE 802.3标准的高度集成以太网收发器。采用先进的DSP技术和模拟前端(AFE),通过UTP电缆实现高速数据传输和接收。在RTL8211E中实现了交叉检测和自动校正,极性校正,自适应均衡,串扰消除,回波消除,定时恢复和纠错等功能,以提供10Mbps,100Mbps或更高的传输和接收能力1000Mbps的。 5、HDMI转mipi视频转接芯片: TC358749XBG是东芝TOSHIBA推出一款HDMI-RX转MIPI CSI-2-TX的视频转换芯片,可将HDMI®流转换为MIPI®CSI-2,同时提供去隔行和自动缩放功能。 6、可编程USB Type-C控制器: FUSB302是仙童FAIRCHILD推出的一款旨在帮助系统设计人员实现具有少量可编程性的DRP/SRC/SNK USB Type-C接口。FUSB302执行的USB Type-C检测,包括连接和定向。FUSB302集成了USB BMC电力输送协议的物理层,允许高达100W电源和角色互换。BMC的PD模块全面支持Type-C规格的替代接口。 7、以上介绍的芯片只要是采用RK3399方案,基本都会用到。另外根据产品功能的不同,可能会增加相应的芯片:例如需要蓝牙和无线功能,会选用正基AMPAK的wifi+BT模块AP6356S(2T2R) ;需要音频功能,会选用瑞昱REALTEK的音频芯片ALC5651等。
瑞芯微旗舰芯片RK3399Pro,应用于AI边缘计算 瑞芯微Rockchip深耕AI市场,RK3399Pro和RK1808两颗人工智能旗舰芯片在智能家居、智能安防、视觉、手势识别、智能语音等领域得到广泛应用。 其中,RK3399Pro内置性能高达3.0Tops,融合了Rockchip在机器视觉、语音处理、深度学习等领域多年经验打造的NPU,让典型深度神经网络Inception V3、ResNet34、VGG16等模型在其上的运行效果表现惊人,性能大幅提升。RK3399Pro是采用CPU+GPU+NPU硬件结构设计的AI芯片,具备以下三大特性: 1、AI硬件性能高;2、平台兼容性强;3、完整方案易于开发。 RK3399Pro作为Rockchip首款整合AI硬件的处理器,其平台可快速量产商用。非常适用于智能驾驶、图像识别、安防监控、无人机、语音识别等各AI应用领域。 快包电子上线RK3399Pro边缘计算主板 基于瑞芯微RK3399Pro架构的AI边缘计算主板,RK3399Pro是一款双Cortex-A72+四Cortex-A53 大小核CPU结构,主频高达1.8GHz的高性能处理器,可支持4K 60fps VP9 and 4K 10bits H265/H264 视频解码,外围接口丰富,拥有超强扩展性。RK3399Pro内置嵌入式神经网络处理器(NPU),NPU算力可达3.0TOPs,支持PCI-e/USB3.0/RGMIIMP,可对多路摄像头及网络摄像头进行视频结构化识别和分析。 Rockchip RK3399Pro芯片的边缘计算主板算力强悍,输入输出接口丰富可扩展性强。PCB 采用8层沉金工艺设计,具有极佳的电气特性和抗干扰特性,工作稳定可靠,可达到工业级标准,可广泛应用于智慧城市、智慧安防、智慧医疗、工业互联网等人工智能终端领域。瑞芯微RK3399Pro 采用28nm工艺,基于双Cortex-A72+四Cortex-A53 大小核CPU结构的64bit高性能处理器,主频高达1.8G Hz。 支持INT8/INT16/FP16混合运算,完美兼顾性能、功耗及运算精度,支持TensorFlow、Caffe、ONNX、Darknet等框架的网络模型转换。 RK3399ro也可搭配N个RK1808核心板组合成高性能AI加速集群,NPU算力可达N*3T,可根据产品需求灵活选择配合使用的RK1808数量,有效的控制成本。 产品规格(部分功能可拓展)
瑞芯微RK3399深度适配麒麟/元心/技德系统,为设备国产化助力 随着国家信息安全需求的不断增强,政企办公设备国产化将是大趋势。瑞芯微Rockchip RK3399深度适配麒麟、元心、技德等国产系统,一系列搭载RK3399的办公平板电脑、类PC、2in1平板已广泛应用于政企办公,全面助力推动政企办公设备国产化。政企办公PC形态 RK3399是Rockchip高性能高规格的旗舰级平板解决方案,适用于高端平板、类PC以及Chromebook等产品,采用双Cortex-A72大核 四Cortex-A53小核,big.LITTLE大小核架构,GPU采用Mali-T860图像处理器,CPU方面整数、浮点、内存优化幅度巨大,具备高性能、低功耗、接口丰富等特点。具备以下技术亮点: 1、集成双USB3.0 Type-C接口,Type-C的DisplayPort音视频输出 2、MIPI/eDP接口,支持2560×1600显示和双屏显示 3、内置PCI-e接口支持基于PCI-e的高速Wi-Fi和存储扩展 4、支持高带宽LPDDR4 5、双ISP像素处理能力高达13MPix/s,支持3D影像 6、适配多种OS,除Android、Linux外,可深度适配麒麟桌面版及移动版OS,以及元心、技德等国产OS 除政企办公设备应用之外,Rockchip也广泛布局教育、金融、医疗、游戏、三防等平板应用领域,64bit 八核芯RK3368是国内主流教育平板品牌首选方案,协力打造场景化智慧课堂系统解决方案。 教育平板形态 RK3368 是八核超强性能平板方案,适配谷歌最新系统Android 9.0,具备HDMI接口和以太网口。跑分超过47000分,充分发挥芯片性能。技术优势包括: 1、64位Big.little架构八核Cortex-A53,主频最高达1.5GHz,28nm HKMG工艺 2、GPU PowerVR SGX6110 3、支持4K H.264/H.265 视频解码 4、支持Remix、Phoenix等轻商用办公操作系统 瑞芯微持续发力平板电脑市场,已形成从入门级平板方案RK3126C、高性价比方案RK3326、到中高阶8核64bit RK3368、旗舰级RK3288和RK3399的全线平板解决方案,覆盖平板市场的多样需求。 高性价比方案RK3326采用Arm 64bit 四核Cortex-A35 CPU,综合性能获得大幅提升,功耗表现佳。GPU采用Arm G31,支持OpenGL ES 3.2,Vulkan 1.0。支持32bit DDR4/DDR3/LPDDR3/LPDDR2等多种DDR,配置选择灵活多样。充裕的带宽设计,更好地支持较高分辨率LCD及更为复杂的应用场景。 对于传统消费类平板市场,RK3126C及RK3326极具市场竞争力,除了经过千万级出货量的市场考验及认可,也将更好地满足Google Android Q后续系统升级的GMS认证需求。
1 下一页