功耗调试之如何调试功耗(一)

STM32低功耗模式调试实战:为什么你的WFI指令一执行就醒?(附SysTick排查技巧) 本文深入探讨了STM32低功耗模式调试中WFI指令执行后立即唤醒的常见问题,重点分析了SysTick定时器等中断源的影响,并提供了一套完整的排查流程和解决方案。通过详细的代码示例和调试技巧,帮助开发者有效解决低功耗模式下的异常唤醒问题,优化嵌入式系统的功耗表现。 阅读详情

功耗调试之如何调试功耗(一)

导航制导与控制实验室

   2015年01月01日

本文就开始讨论功耗的调试步骤和方法。

本文主要的内容如下:

一、明确调试的目标

二、明确调试的内容

三、参照电路框图找出我们需要检测的输出

四、找出或引出需测试的输出

五、功耗测试的步骤流程图

一、明确调试的目标

明确调试的目标,即在满足当前的需求情况下,尽最大的可能去降低各种状态下、各路模块的功耗值。一般情况下,功耗越低要求也就越严格。例如:某设备的电池为300mAh,假设一种情境下休眠功耗电池端为0.8mA,另一种情境下功耗电池端为1mA,显然仅仅相差200uA(出现这种状态的情况就比较多了,有可能是GPIO口的状态不对,也有可能是外设漏电引起,还有可能是电源管理配置有问题。)通过计算可以算出来0.8mA待机375小时,而1mA待机300小时,相差75小时,这对一个设备来说是很重要的。


二、明确调试的内容


我们为了更好的调试功耗,必须做一个简洁并且一目了然的表格用来记录我们的测量结果,总的来说测试表格的内容几乎就是我们测试的内容;

概况的说,包括需要调试6种状态和5个电路模块的功耗,其中

6种状态是指:

第一、开机后的空闲状态(开机亮屏状态下,不进行任何操作,即,后台几乎没有CPU资源占用率高的进程);

第二、关闭显示屏,但不休眠的状态;

第三、进入休眠过程中(early_suspend)的状态;

第三、完全进入休眠的状态;

第四、完成关机的状态;

第五、其他状态下(比如视频播放、蓝牙通信、WiFi连接、游戏运行等),该状态只是用来评估CPU内部模块,或者某个特定的外设工作时的功耗。

5个电路模块是指:

Battery(电池供电的电路,是设备总的功耗);

cpu_core(给处理器内部的逻辑电路供电的电路);

cpu_memory(给SDRAM(DDR)以及处理器DDR phy供电的电路);

vddio(给处理的VDDIO以及一些处理器内部的外设控制器,外部的外设供电的电路);

其他的外设(包括其他全部的外设,例如wifi、bluetooth、tp以及lcd等,这个可以列出多种调试状况)。


测试的内容当然可以根据当前情况进行有目的测试,比如下图就是我在测试是做的表格:

注:如果测试的数据值是正确的,我们还需要记录下测试所用的代码版本,所用的软件资源,测试时间,测试人员,以及主频,外频等情况。


三、参照电路框图找出我们需要检测的输出

由newton的框架图可知:

(1)     CPU_core由OUT1(1.2V)供电;

(2)     CPU_mem由OUT2(1.8V)供电;

(4)     OUT6(3.3V)给EVG供电;

(5)     OUT9(3.3V)和OUT17(1.8V)给TP供电;

(6)     OUT10(1.8V)给MIC供电;

(7)     OUT11(3.3V)给sensor供电;

(8)     OUT12(3.3V)给MOTOR供电;

(9)     OUT13(3.3V)和OUT14(1.8V)给LCD供电;

(10)   OUT16(3.3V)给sensors供电;

(11)   OUT19(1.8V)给wifi供电;

进而我们了解了整块板的基本供电情况,从而测量各个模块的电流情况。

这里我们用到regulator,但是很多开发板或者设备没有regulator,这时我们就得在电路图中获得每个模块的供电情况。

注:像君正的newton开发板是具有regulator的,在板级中我们能看到regulator的简单配置,还有一些基本的配置,regulator参数的调试也是属于功耗调试的,如果木有的话,就算了。


四、找出或引出需测试的输出

1、电源端比较容易测量;

2、其他测试点:我们需要借助altium designer、99SE、DXP、PADS等工具,找出易测量的点或者飞线,这里就省了如何查找的步骤;

下面我们就开始介绍下测试的步骤了?!

JTAG端口如何成为攻击入口?功耗分析与安全防御实战 在嵌入式系统开发中,调试接口是工程师排查问题的利器,但同时也是硬件安全中最常被忽视的薄弱环节。JTAG作为IEEE 1149.1标准定义的边界扫描接口,不仅能测试PCB连通性,更可实现对CPU内核的完全控制——读写内存、提取固件、绕过校验,等同于给攻击者打开了一扇任意门。更严峻的是,即便启用了调试保护,功耗分析(Power Analysis)这类侧信道攻击仍可通过观察芯片运行时的电流波动,逆向还原出AES密钥等敏感信息。攻击者往往先利用功耗分析获取密钥,再借助JTAG完成固件篡改与持久化控制,两者组合构成完 阅读详情

相关推荐

用NRF52832做个蓝牙遥控器:一主多从连接8个设备,代码实战避坑

本文详细介绍了如何利用NRF52832开发支持一主多从连接的蓝牙遥控器,实现同时连接8个设备的实战方案。内容涵盖硬件选型、协议栈配置、多连接管理及常见问题解决,特别针对智能家居场景提供了优化建议和代码示例,帮助开发者避开实际应用中的典型陷阱。

weixin_33681778的博客 695

展锐平台功耗问题思考

1.是否真正进入休眠; 展锐平台真正进入休眠的log是suspend resume source,在内核的osi_sleep.c中,这个是判断休眠的根本依据;目前平台上的休眠函数发送AT+CSCLK=2可以直接进入休眠,log如有变化可以发送这个指令,抓取log做对比分析; 2.用示波器看高低电平持续的时间,分析是平台问题还是定制的版本有问题; 3.飞行模式前后功耗对比; 4.一直跑的任务重,任务切换是否用到了低功耗对应的函数接口osiThreadSleepRelaxed(FREER...

lkq1621388556的博客 1058

FreeRTOS Tickless模式:嵌入式低功耗调度核心原理

在嵌入式实时操作系统(RTOS)中,低功耗设计关键依赖于精准的时间管理机制。Tickless模式通过摒弃固定周期的SysTick中断,转而采用自由运行计数器与可编程单次定时器协同工作,实现‘按需唤醒’的深度睡眠调度。其本质是将时间推进从‘中断驱动’转变为‘物理计时+事件宣告’,既保障任务延时、超时等待等定时语义的严格正确性,又显著降低CPU及外设的无效唤醒开销。该机制广泛应用于电池供电的物联网终端、环境监测节点等对续航敏感的场景,是FreeRTOS功耗优化的核心技术支撑,也是理解RTOS电源管理与硬件时钟协

weixin_34471637的博客 197

展锐平台HDR调试心得

HDR,High-Dynamic Range,也就是高动态范围,用于对象的最明亮和最暗部分相差特别大的时候。HDR开启后会连拍三张照片,分别对应欠曝光、正常曝光和过度曝光,然后把这三张图片合到一块并且突出每张照片最好的部分从而生成一张精妙绝伦的照片。HDR能让该亮的亮、让该暗的暗、让亮/暗部的细节更丰满。 设置不同的ev曝光,得到长曝光帧和短曝光帧,再对齐融合。 如果黑的地方很暗,ev1过曝帧加大,例如从0.6-1.8 如果背景过曝很亮,ev0欠曝帧减小,例如从-0.5- -1 W_yoe_m:Lum_t

lw123456_的博客 1439

Android功耗调试汇总

(1)runtime PM机制 系统在非睡眠状态时,设备在空闲时可以进入runtime suspend状态同时不依赖系统wake_lock机制;非空闲时执行runtime resume使得设备进入正常工作状态。 主要代码放在Runtime.c (drivers\base\power)中,同时附带的Runtime_pm.txt (documentation\power)有详细说明。要使得设备可以进入runtime_idle与runtime_suspend必须满足device的2个参数usage_count与c

cornerstone1的博客 3900

高通调试工具使用手册,仅供参考!

高通调试工具使用手册,仅供参考!

Android:展锐T760平台camera驱动调试

1、MIPI CSI该平台有DPHY和CPHY两种MIPI信号。 DPHY配置:包括数对差分数据信号DP/N,和一对差分时钟信号CKP/N。 CPHY配置:最多有3lane,每lane由ABC三条数据组成。 Camera的连接方式受限于UMS9620x内部的CSI PHY、CSI Controller和DCAM模块。2、I2CUMS9620x作为Controller,通过I2C总线对Camera进行配置或者对Camera状态进行读取。3。

leezs的博客 4733

高通功耗调试文档

一篇关于高通平台的功耗调试文档,这个通用的所有平台。

【展锐】PDAF调试

驱动修改点 A:sensor_xxxx_mipi_raw.c 1.获取PD信息函数 static const cmr_u16 xxxx_pd_is_right[] = PD点位置信息,遮住右半边表示右点,用1表示,遮住左半边表示左点,用0表示;具体需要看sensor static const cmr_u16 xxxx_pd_row[] =PD位置行坐标 static const cmr_u16 xxxx_pd_col[] = PD位置列坐标 static const struct pd_pos_info _

来碗炒饭 3091

Unity游戏开发实战:用Flow Field实现RTS百人军团流畅寻路(附完整代码)

本文深入探讨了在Unity中利用流场寻路技术解决RTS游戏大规模单位移动性能瓶颈的实战方案。通过解析从Dijkstra算法生成成本场、积分场到最终向量场的核心原理,并结合分块、缓存及与DOTS/ECS架构集成的优化策略,实现了百人军团的流畅群体寻路。文章提供了完整的代码示例,助力开发者构建高性能的RTS寻路系统。

weixin_28363123的博客 587

ROS2 -Jazzy 一步一步(第一步_工作空间以及编译)

文件夹作用特点是否需要手动创建/维护src存放自己写的 ROS 2 包一个 workspace 可以有多个包需要手动创建build保存编译过程中的中间文件每个包生成对应子目录自动生成,可删除install保存编译完成后的功能包每个包有独立子目录,含可执行文件自动生成,可删除log保存编译日志用于查看错误原因、调试自动生成,不需修改colcon是 ROS 2 推荐使用的构建工具自动处理功能包的依赖和编译顺序一条命令就能编译整个工作空间。

jerrykorea的博客 1380

开发 HarmonyOS NEXT 低功耗蓝牙调试助手:从零到一的实践指南

开发 HarmonyOS NEXT 低功耗蓝牙调试助手涉及多个关键步骤,包括环境搭建、BLE 设备扫描、连接管理、消息收发以及用户界面设计。通过实现这些核心功能,我们创建了一个强大的工具,可以极大地简化 BLE 设备的开发和调试过程。在实际应用中,注重性能优化和用户体验,遵循最佳实践,将使得这个调试助手成为开发者不可或缺的得力助手。

m0_69239579的博客 2723

从RADIUS服务器到AP:实战搭建一个小型WPA2-Enterprise测试环境(FreeRADIUS + 家用路由器)

本文详细介绍了如何从零搭建WPA2-Enterprise测试环境,使用FreeRADIUS服务器和家用路由器实现企业级WiFi认证。通过实战指南,包括证书生成、EAP-PEAP配置、OpenWrt路由器设置及故障排查,帮助网络工程师和爱好者掌握802.1X协议栈的实际应用。

weixin_28715953的博客 325

低功耗调试

PWR_EnterSTOPMode(PWR_Regulator_ON, wfi or wfe      都是 接着debug 下去

gtkknd的专栏 3835

【深度解析】AURIX TC387 UCB Flash架构与避坑指南(第一篇)

摘要:UCB(用户配置块)是AURIX TC3xx芯片启动与安全的关键配置区域,位于DFLASH0存储区。每个512字节的UCB包含启动模式、安全设置等关键参数,并通过强制CRC32校验确保完整性。UCB分为启动头(UCB_BMHD)、安全配置(UCB_ORIG)及其备份(UCB_COPY)三种主要类型。不同于常规Flash,UCB具有自动擦除特性,错误配置可能导致芯片永久锁死。开发中应谨慎修改UCB,必须同时编程原始和备份版本,并确保正确的CRC校验。后续文章将详细介绍UCB编程方法和调试技巧。

2511_94612429的博客 1234

【推荐100个unity插件之7】使用BehaviorDesigner插件制作BOSS的AI行为树

Behavior Designer是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化编辑器。Behavior Designer提供了强大的AP1可以让你轻松的创建tasks(任务),配合uScript和PlayMaker这样的插件,可以不费吹灰之力就能够创建出强大的Al系统,而无需写行代码。(不懂PlayMaker的,我后面在单独出文章介绍一下,可以期待一下)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 6569

【安富莱专题教程第7期】终极调试组件Event Recorder,各种Link通吃,支持时间和功耗测量,printf打印,RTX5及中间件调试...

说明:1、继前面的专题教程推出SEGGER的RTT,JScope,Micrium的uC/Probe之后,再出一期终极调试方案Event Recoder,之所以叫终极解决方案,是因为所有Link通吃。 支持时间测量,功耗测量,printf打印,RTX5及其所有中间件调试信息展示。2、当前在JLINK,CMSIS-DAP,STLINK全部测试通过,KEIL自家的ULINK系列也都支...

weixin_30764771的博客 170

【应用】OpenClaw玩转有道云笔记

功能名称核心原理实操示例(直接复制可用)实操避坑+补充说明网页剪藏插件自动抓取网页正文、下载图片,通过 API 发送到你的有道云笔记,内联图片避免防盗链失效帮我把这个网页剪藏到云笔记:https://example.com/article1. 避坑:知乎、公众号等需登录的网站,先在浏览器登录再剪藏;2. 原理:自动过滤广告,只留正文;3. Twitter/X 剪藏需额外配置 APIFY_API_TOKEN(见1.2.4)创建笔记。

海兰 715

【专题教程第7期】终极调试组件Event Recorder,各种Link通吃,支持时间和功耗测量,printf打印,RTX5及中间件调试

说明: 1、继前面的专题教程推出SEGGER的RTT,JScope,Micrium的uC/Probe之后,再出一期终极调试方案Event Recoder,之所以叫终极解决方案,是因为所有Link通吃。 支持时间测量,功耗测量,printf打印,RTX5及其所有中间件调试信息展示。2、当前在JLINK,CMSIS-DAP,STLINK全部测试通过,KEIL自家的ULINK系列也都支持...

Simon223的博客 1963

基于Python的IMF经济数据爬取与分析:从入门到实战

本文详细介绍了如何使用Python爬取国际货币基金组织(IMF)的经济数据,包括最新的爬虫技术、反反爬策略、数据解析与存储方法。文章从IMF数据源分析开始,逐步讲解如何构建一个完整的爬虫系统,并提供了详细的代码实现和优化建议。通过本文,读者将掌握爬取复杂国际组织数据的关键技术,并能将这些技术应用于其他类似的数据获取场景。关键词:Python爬虫、IMF数据、经济数据获取、数据清洗、反爬策略IMF Data (data.imf.org) - 主要数据门户。

2201_76125261的博客 1439

Pytorch入门实战(2)-使用BP神经网络实现MNIST手写数字识别

上一篇:Pytorch入门实战(1) - 实现线性回归 涉及知识点 Pytorch nn.Module的基本使用 Pytorch nn.Linear的基本用法 PytorchVision Transforms的基本使用 Pytorch中DataLoader的基本用法 Pytorch详解NLLLoss和CrossEntropyLoss 如何确定神经网络的层数和隐藏层神经元数量 本文内容 本文将会使用BP神经网络(就是最普通的神经网络)实现一个MNIST手写数据集的实现。话不多说,直接开始。 首先先导入需要的包

iioSnail的博客 6617

榨干最后一微安:极致省电的低功耗设计实践总结

涵盖直连与悬空电路、含电容电路、外部上拉电路、USB、调试接口、独立供电域 VDDIO2 及其他低功耗踩坑点

m0_63956046的博客 534

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

AB1601低功耗时烧写代码注意事项

进入低功耗后功耗比较低,有时候插上了调试串口,有小电流漏过来,所以,即使断掉电源,还是进不了烧写状态。要想以下办法: 1.烧写前先唤醒。 2.或者拔掉调试串口。 两种方法都可以。

qinrenzhi的博客 313

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

window 显示驱动开发-视频内存的直接交替(一)

直接翻转(DirectFlip)是WDDM1.2+引入的优化技术,旨在降低全屏应用(如视频播放器、游戏)的内存带宽和功耗,同时确保全屏应用与桌面环境之间的无缝切换。通过绕过DWM合成器,直接将应用交换链缓冲区翻转到显示引擎,DirectFlip显著减少了GPU到显示控制器的数据传输,从而延长移动设备的电池续航。该技术适用于全屏视频播放、游戏等场景,能够在不退出全屏模式的情况下动态显示通知或覆盖层。驱动程序实现需声明支持DirectFlip,并在翻转模式协商和内存管理中满足特定要求。WHCK认证要求验证Dir

王马的博客 1235

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SMUDebugTool深度调试指南:解锁AMD Ryzen处理器的硬件级性能优化能力

### 硬件调试的三大核心痛点与解决方案 现代处理器调试面临三大挑战:官方工具功能受限、深度参数调节困难、多场景优化需求难以满足。SMUDebugTool通过直接访问系统管理单元(SMU)和模型专用寄存器(MSR),提供了突破厂商限制的底层控制能力,让普通用户也能获得专业级调试体验。 ### 技术对比矩阵:主流硬件调试工具核心差异 | 功能特性 | SMUDebugTool | 官方超频工具 |

gitblog_00666的博客 218

SMUDebugTool:专业级AMD Ryzen硬件调试技术完全指南

SMUDebugTool采用分层架构设计,实现对AMD Ryzen处理器的深度控制与调试能力,其架构体系包含三个核心层次: ### 1.1 驱动交互层 该层通过ZenStates-Core.dll实现与系统管理单元(SMU)的底层通信,封装了PCIe总线事务处理、MSR寄存器访问协议和SMU固件交互接口。驱动交互层采用异步通信模式,默认超时阈值设置为500ms,确保在高负载情况下仍能保持稳定的硬

gitblog_01176的博客 386
上一篇: 功耗调试之调试前准备
下一篇: 功耗调试之如何调试功耗(二)
中華田園犬
博客等级 码龄16年 349粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值