tag 标签: amp

相关帖子
相关博文
  • 热度 3
    2024-1-17 14:56
    469 次阅读|
    0 个评论
    如果要选出飞凌嵌入式最热门的几款产品,FET3568-C系列核心板一定榜上有名。这款高性价比的全能型核心板上市两年来已赢得了数千家客户的青睐。飞凌嵌入式也在不断对它进行升级——从“配置新增”到“100%国产化认证”再到“新系统适配”,以满足更多行业客户的需求。 近期, 飞凌嵌入式FET3568-C系列核心板再度迎来新升级——支持“AMP”双系统 。 1、什么是“AMP” AMP(非对称多处理)简单来说就是:多核处理器的每个核之间相互隔离,可以相对独立地运行不同的操作系统或裸机程序。这种运行模式比较适合高实时性的应用。 2、FET3568-C核心板AMP 飞凌嵌入式FET3568-C核心板搭载的RK3568处理器采用四核Cortex-A55架构,从架构上看属于“同构多核架构”。 RK3568的AMP SDK与Linux SDK相比,区别在于Linux SDK中使用的是SMP(对称多处理)模式,即只运行一个Linux操作系统,在该操作系统中管理全部四个核;而 AMP SDK使用AMP的模式,四个核心中的三个核心共同运行一个Linux操作系统,另一个核心单独运行裸机程序 。 由于高实时性任务是由运行裸机程序的核心专门处理的,所以这种运行模式可以很好地满足如电力互联网、电网继电保护、电力系统安全控制、工业自动化等领域的高实时性需求。 3、更低成本,更高实时性,更具优势 (1) 更低成本: 为了解决Linux系统主控实时性不足的问题,在传统应用中通常会采取外挂单片机的方式专门执行高实时性的程序。 而采用AMP系统就可以舍弃掉外置的单片机,在FET3568-C核心板上,可以将四个A55核中的一个核心分离出来作为实时核单独运行RT-Thread或裸机程序——只用一颗芯片就能够完成所有的工作,降低了硬件成本。 (2) 高实时性: 由于Linux系统实时性较低,所以无法用来执行对实时性要求高的任务。而裸机程序或者实时操作系统的实时性远高于Linux系统,同时也得益于FET3568-C核心板最高2.0GHz的高主频,运行实时操作系统的A55核也可以拥有很强的实时性。 4、核间通信 与其它多核异构架构的处理器相同,AMP也使用共享内存的方式在A核(Linux)与实时核(裸机或实时操作系统)之间进行数据传输。 通过物理内存DDR分配,将硬件层分为了两部分:TXVring Buffer(发送虚拟环状缓冲区)和RXVring Buffer(接收虚拟环状缓冲区);其中实时核从TXVring区发送数据,从RXVring区读取接收数据,A核反之。 5、AMP使用示例 目前飞凌嵌入式FET568-C核心板已提供GPIO、UART、SPI接口的使用示例,使用RPMSG进行核间通信。其它接口还在适配中,之后会陆续开放。裸机程序可以在提供的工具中使用JLINK仿真调试。 下面简要介绍一下裸机程序中UART接口的使用示例: (1) 硬件连接 本示例使用的是UART5,使用跳线帽将OK3568-C开发板上的TX5与RX5短接。 (2) 设备树配置 为了防止Linux占用UART5的资源导致实时核无法使用UART5,需要先在设备树上的rockchip_amp节点添加对UART5的资源保护,包括时钟和pinctrl。 clocks = , , pinctrl-names = “default”, ”uart5”; pinctrl-1 = ; (3) 裸机程序的配置 UART接口使用介绍: // 管脚配置:选择UART5的收发管脚。/* uart5 tx */ HAL_PINCTRL_SetIOMUX(GPIO_BANK3, GPIO_PIN_C2, PIN_CONFIG_MUX_FUNC4); /* uart5 rx */ HAL_PINCTRL_SetIOMUX(GPIO_BANK3, GPIO_PIN_C3, PIN_CONFIG_MUX_FUNC4); /* uart5 m1 */ HAL_PINCTRL_IOFuncSelForUART5(IOFUNC_SEL_M1); // 通讯配置:波特率为115200,无校验,数据位8位,无流控,停止位1位。 /* uart5 config */ struct HAL_UART_CONFIG demo_uart_config = { .baudRate = UART_BR_115200, // 波特率 .dataBit = UART_DATA_8B, // 数据位 .stopBit = UART_ONE_STOPBIT, // 停止位 .parity = UART_PARITY_DISABLE, // 校验 }; HAL_UART_Init(&g_uart5Dev, &demo_uart_config); 中断使能:配置并使能接收超时中断。 HAL_IRQ_HANDLER_SetIRQHandler(UART5_IRQn, uart5_isr, NULL); HAL_GIC_Enable(UART5_IRQn); HAL_UART_EnableIrq(g_uart5Dev.pReg, UART_IER_RDI); // 执行流程 // 初始化完成后,会先发送一串数据。如果接收到数据,触发中断,然后将接收的数据从调试串口发送出来。 // 中断回调函数 int iir = 0; iir = HAL_UART_GetIrqID(g_uart5Dev.pReg); if (iir & UART_IIR_RX_TIMEOUT) { do { ret = HAL_UART_SerialIn(g_uart5Dev.pReg, &c, 1); if (ret) printf("%02x ", c); } while (ret); printf(“\n”); } 示例使用: 根据OK3568-C开发板产品资料中提供的手册,在裸机程序的main函数中调用我们编写好的使用例程。 实验现象: 按照手册编译烧写完程序后,打开串口调试助手,打开对应串口,可以看到OK3568-C开发板开机后程序发出的数据。 在串口调试助手,输入任何数据并发送,触发接收中断,从实时核调试串口(uart4)就可以看到输入的数据了。
  • 热度 3
    2023-12-12 10:29
    576 次阅读|
    0 个评论
    本文基于 HD-RK3568-IOT 评估板进行验证。 1.RK3568AMPSDK 获取 在虚拟机内创建 rk356x-amp-sdk 目录,后续在该目录下执行命令,在 rockchipgit 库下载 AMPSDK 。 2.AMP 功能验证 目前在 RK3568 上分别验证了 1linux+3hal 、 1linux+3rtt 、 3linux+1hal 、 3linux+1rtt 一共 4 种模式; 4 种模式均在原始 SDK 的基础上进行的修改,然后针对修改分别生成了不同的 patch ,用户可以根据自己的需求来打上不同的 patch 打上 patch 后,直接在 SDK 目录使用 ./build.sh 命令编译 sdk ,编译成功后,将编译生成的 img 文件烧录到板卡内,可以分别在 uart2&uart4 上分别看到 linux 内核和 hal 或 rtt 的相关打印; 2.1 1Linux+3RTT 串口打印信息 图 2.1AMP1Linux+3RTTRTT 串口打印 图 2.2AMP1Linux+3RTTLinux 串口打印 2.2 1Linux+3HAL 串口打印信息 图 2.3AMP1Linux+3HALLinux 串口打印 图 2.4AMP1Linux+3HALHAL 串口打印 2.3 3Linux+1RTT 串口打印信息 图 2.53Linux+RTTLinux 串口打印 图 2.63Linux+1RTTRTT 串口打印 2.4 3Linux+1HAL 串口打印信息 图 2.73Linux+1HALLinux 串口打印 图 2.83Linux+1HALHAL 串口打印 3.SDK 编译及 AMP 配置说明 3.1 HAL 编译 在 hal/project/rk3568/GCC 路径下编译 HAL 固件, HAL 编译命令如下: cdhal/project/rk3568/GCC ./build.shcpu_id 编译完成后,在 hal/project/rk3568/GCC/ 目录下分别生成 hal0.bin 、 hal1.bin 、 hal2.bin 、 hal3.bin 。 3.2 RT-Thread 编译 在 rt-thread/bsp/rockchip/rk3568-32 路径下编译 32 位 RT-Thread 固件。固件运行的 CPU 可以通过 menuconfig 配 置 RT_RUN_MEM_BASE 指定,默认配置如下,运行在 CPU0 ,请根据项目实际情况进行修改: rt-thread/bsp/rockchip/rk3568-32/rtconfig.h #defineRT_RUN_MEM_BASE0x12000000 编译完成后,在 rt-thread/bsp/rockchip/rk3568-32 目录下生成固件 rtthread.bin 。 3.3 Kernel 编译 Kernel 编译命令如下: cdkernel makeARCH=arm64rockchip_linux_defconfig makeARCH=arm64rk3568-evb1-ddr4-v10-linux-amp.img-j16 编译完成后,会在 kernel 目录下生成 boot.img 3.4 U-boot 编译 在 uboot 工程中修改配置文件 configs/rk3568_defconfig ,增加配置打开 AMP 功能,打开 AMP 功能后,使用以下命令进行编译: cdu-boot ./make.shrk3568 编译完成后,会在 u-boot 目录下生成 rk356x_spl_loader***.bin 、 uboot.img 。 3.5 AMP 固件打包 以 RK3568 为例,在 hal 工程中修改用于 AMP 打包的 its 文件, project/rk3568/Image/ 路径下有 amp_linux.its 和 amp.its 两个文件,跑带有 Linux 的 amp 形式时建议使用 amp_linux.its 配置。每个 CPU 均可以单独配置所加载的固件、架构、指令集、运行地址、启动延时等参数。 3.6 SDK 统一编译与打包 RK3568 支持 Linux+HAL 的 AMP 混合架构设计,使得不同的 CPU 可以运行不同的系统,以满足灵活的产品设计需求。该 SDK 目前默认支持 Linux+HAL+HAL+HAL 的混合结构模型,其中运行 Linux 的 CPU 为主核,其余运行 HAL 的 CPU 为从核。具体配置如下: 系统 CPU 功能 说明 Linux CPU0 主核 执行 Linux 系统 HAL CPU1 从核 执行裸核系统 HAL CPU2 从核 执行裸核系统 HAL CPU3 从核 执行裸核系统 3.6.1 编译配置 SDK 的统一编译配置脚本位于 device/rockchip/rk3568/ 目录下,编译配置脚本内容包括 U-Boot 、 Kernel 、 HAL 、 RT-Thread 的配置,以及 AMP 相关的 CPU 分配,内存分配等配置。用户可以根据需求增加或者修改配置脚本文件,以满足自己的编译需求。目前支持的配置文件如下: ├── BoardConfig-rk3568-evb1-ddr4-v10.mk#EVB 开发板对应配置脚本 ├── parameter-rk3568-amp.txt#EVB 开发板对应 parameters 文件 ├── rk3568_amp.cfg# 烧录工具对应的配置文件 └── rk3568_amp_linux.its#AMP 打包 ITS 配置文件 3.6.2 统一编译 统一编译脚本工具支持一键编译及打包 U-Boot 、 Kernel 、 HAL 、 RT-Thread 、 ROOTFS 等,并生成对应的 Image 镜像。首次编译时,需要选择编译配置脚本,如下: user@host:~/root$./build.shlunch You'rebuildingonLinux Lunchmenu...pickacombo: 0.defaultBoardConfig.mk 1.BoardConfig-rk3568-evb1-ddr4-v10.mk Whichwouldyoulike? :1 配置完成后,执行一键编译指令,如下: user@host:~/root$./build.sh 编译结果位于 rockdev/ 目录下,如下 rockdev/ ├── amp.img#AMP 镜像 ├── MiniLoaderAll.bin#Loader ├── parameter.txt# 分区表信息 ├── rootfs.img# 根文件系统 ├── misc.img# 供 recovery 保存一些升级信息 ├── uboot.img#U-boot 镜像 └── update.img# 完整固件镜像 统一编译脚本工具同时可以支持单独编译所有模块,如 U-Boot 、 Kernel 、 RT-Thread 、 HAL 等,具体使用方式可以通过 help 命令来查看: user@host:~/root$./build.sh--help
  • 热度 22
    2013-2-14 18:32
    1830 次阅读|
    0 个评论
    Nowadays, it's all about the coulombs. Some products run for years off a single coin cell and any excess electron use will drain that power source prematurely. If you're building low-power electronics, it's important to be able to measure current consumption, sometimes to very low values. Few digital multimeters (DMMs) can measure much sub-1µA. My Extech 330, for instance, has a 0.1-µA digit but is unsurprisingly inaccurate when presented with a couple of hundreds of nA (nanoamp). A nA isn't much, but some controllers today claim sleep currents of just tens of nA. One nifty tool is the µCurrent from EEVblog's Dave Jones. It's a very simple circuit adapter consisting of not much more than a selectable set of shunt resistors and an op amp. You could cobble up your own design in no time, but the µCurrent is inexpensive and well-engineered. I ordered one since I'm taking a lot of data from some very low-power systems. As the picture shows it's a small box with two switches and four plugs. Put the µCurrent in series with the power supply to your system, and plug a DMM into the two output plugs. One switch controls power; the other selects one of three ranges. These produce 1 mV/nA to the meter, or 1 mV/µA, or 1 mV/mA. So in the lowest scale a meter reading of 100 mV corresponds to 100 nA. It's quite accurate and easy to use. Sub-10 nA readings were spot-on and easy to make. That's better than the $400 Fluke 87V DMM (resolution 0.01µA) can do. There's no out-of-range indication. The op amp saturates at about 1.5V, which is the only clue it's time to change settings. The manual warns that the unit is unfused, and the shunt resistors are teeny little SMT things that will fry easily so one has to be careful not zap it with too much current. My one beef is that the two input banana plugs don't have the usual holes drilled perpendicular to the posts. My drill press quickly took care of that, because I find those holes tremendously useful. The picture shows a resistor lead going into one of the newly-drilled holes.   1 V going through 30 MOhms reads 33.5 mV, or 33.5 nA, which is nearly spot-on, accurate to within the tolerance of the resistors. Dave specs the thing with a 2kHz bandwidth, but I found it gave reasonable results out to 3.5kHz. This is definitely not something to track power consumption of your system on an instruction-by-instruction basis. Or to watch current zoom up when the CPU wakes up for a hundred microseconds. But it's great for understanding static and more slowly-moving events.   Bottom trace:3.5kHz input to the µCurrent (through a 10K resistor). Top: output from the µCurrent, 200µsec/div. Dave has a full write-up including a schematic about the µCurrent here: www.alternatezone.com/electronics/ucurrent/uCurrentArticle.pdf . The unit is available for $60 from AdaFruit . Definitely recommended for those who need to make low-current measurements.  
  • 热度 17
    2012-12-7 20:57
    1450 次阅读|
    0 个评论
      作者: 德州仪器 (TI) Bruce Trump   仪表放大器(IA)是运算放大器和反馈电阻的结合,用于精确地获取和放大信号。 使用这些通用放大器的一个常见错误是没有为输入偏置电流提供一条通路。25年以来,我们一直在向人们展示一幅图表,强调正确运行所要求的必要输入偏置,但广大设计人员似乎都没有注意到这一点。之所以会这样也许正是因为它的名字—— 仪表放大器 。它听起来像是实验室仪器,例如:示波器或者频谱分析仪等,包括一些随时可用的输入。好吧,差不多是这样,但仪表放大器需要您更小心一些。 每个输入都直接连接至双极晶体管基极(请参见图 1a)或者 FET 栅极(请参见图 1b)。双极晶体管要求基极电流工作。浮动热电偶电压源不提供该电路通路。没有该电流通路的情况下,输入会出现饱和,从而形成无效输出电压。   即使是一个极低输入偏置电流的 FET 输入 IA(例如:INA116)也要求一条偏置电流通路。 尽管首次上电时图 1b 所示 AC 耦合电路可能会看似正常工作,但输入电容会通过微输入偏置电流缓慢充电,并且输出好像会不稳定或者偏离其起始值。每个输入的接地电阻器会对该电路正确偏置,同时在 FET 输入的输入偏置电流极低的情况下 10MΩ 电阻会非常有效。 请注意,许多电路均不会要求采取特殊的预防措施。如果差动输入电压源能够提供输入偏置电流,并且其参考导电通路接地,则无需特殊预防措施。请参见图 2。   图 3 显示了正确偏置 IA 输入的三个例子。所选应用和 IA 的特性不同,图中所示电阻器值可能也会不同。 在如何提供这种电流通路方面,存在许多差异。图中仅显示了三种通用案例。只需一点点创造性,您便可以找到一种适合您应用的方法。如果您对我们的高精度放大器有什么建议,请访问我们的论坛。 我又一次想到了这种放大器的名字:仪表放大器,这可能就是它经常被人忽略的原因。顺便说一下,在处理运算放大器输入时我们也可能会犯同样的错误。至于原因,我认为无需解释,不是吗?   感谢阅读 Bruce 
相关资源