<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sun_boy_boy_sun的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sun_boy_boy_sun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sun_boy_boy_sun]]></copyright><item><title><![CDATA[https://blog.youkuaiyun.com/Caoyang_He/article/details/80867543]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/88062939</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/88062939</guid><author>sun_boy_boy_sun</author><pubDate>Fri, 01 Mar 2019 16:51:49 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/Caoyang_He/article/details/80867543

]]></description><category></category></item><item><title><![CDATA[Cache问题]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87934977</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87934977</guid><author>sun_boy_boy_sun</author><pubDate>Tue, 26 Feb 2019 15:27:59 +0800</pubDate><description><![CDATA[
什么是程序访问的局部性？
Cache一般采用什么制作，优点是什么？
什么是块长，怎么计算？
Cache与主存之间是字块传送
CPU访问Cache命中/不命中意思？
缓存的块数C远小于主存的块数M
由于上一条的原因，一个缓存块不能永久的对应一个主存块（一对多），所以每个缓存块都需要设置一个标记，用来表示当前存放的是哪一个主存块
CPU读信息时，需要将主存地址的高m位（或m位的一部分）与缓存块的标记...]]></description><category></category></item><item><title><![CDATA[模4补码（也称为变形补码）详解]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87917020</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87917020</guid><author>sun_boy_boy_sun</author><pubDate>Mon, 25 Feb 2019 15:05:09 +0800</pubDate><description><![CDATA[
模4补码又称为变形补码
概念是：用两个二进制位来表示符号位，其余位与补码相同，【例如模2补码的-3为1101,模2用1位，这里是最高位表示符号位，剩下3位是3的补码，同样模4补码表示-3为11_101,模4用两位表示符号位，这里是最高两位11，其余3位为3的补码】总的说来就是符号位左边那一位表示正确的符号(这就说明了选择题里面存储模4补码只需要一个符号位是正确的，因为任意一个正确的数值，模4补码...]]></description><category></category></item><item><title><![CDATA[模2运算]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87916417</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87916417</guid><author>sun_boy_boy_sun</author><pubDate>Mon, 25 Feb 2019 14:30:28 +0800</pubDate><description><![CDATA[模2运算是一种二进制算法，CRC校验技术中的核心部分，因此，我们在分析CRC算法之前，必须掌握模2运算的规则。与四则运算相同，模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且，模2运算也使用与四则运算相同的运算符，即“＋”表示模2加，“－”表示模2减，“×”或“·”表示模2乘，“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位，即模2加法是不带进位的二进制加法运算...]]></description><category></category></item><item><title><![CDATA[CTS时钟树综合一0225/2019]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87912747</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87912747</guid><author>sun_boy_boy_sun</author><pubDate>Mon, 25 Feb 2019 11:02:35 +0800</pubDate><description><![CDATA[一.芯片设计中时钟分为两类：真实时钟/虚拟时钟，真实时钟分为两种模式：1.时钟树综合前没有延时的理想时钟（ideal clock）2.时钟树综合后的传播时钟（propagated clock）;对于某个不含PLL的设计模块，其信号来自于顶层芯片，我们就定义为虚拟时钟。
二.时钟树综合与标准设计约束文件

时钟树综合需要对期望实现的参数做出定义，这些参数通过“时钟树约束文件”提供；
时钟树约束文件中...]]></description><category></category></item><item><title><![CDATA[数字和模拟混合供电20190221]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87855932</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87855932</guid><author>sun_boy_boy_sun</author><pubDate>Thu, 21 Feb 2019 15:21:46 +0800</pubDate><description><![CDATA[一.数模混合供电设计中，需要特别注意电源信号之间的干扰和隔离，因而需要建立不同的电源区域（Power Domain）:
1)模拟模块的工作区域一般放置在芯片的某个角落，其间不应该混合放置数字模块；
2）模拟区域需要单独供电，给模拟信号供电的I/O单元应该放在模拟模块的边上，尽量缩短供电线路的长度；
3）在模拟模块周围放置保护隔离环（Guard Ring）；

如上图某芯片电源规划图：
1）模拟信号...]]></description><category></category></item><item><title><![CDATA[数字集成电路设计__数字后端__电源网络设计__概念解析示例]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87795431</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/87795431</guid><author>sun_boy_boy_sun</author><pubDate>Wed, 20 Feb 2019 15:22:31 +0800</pubDate><description><![CDATA[1.Power Ring
Power ring是指为了均匀供电，包围在标准单元周围的环形供电金属。如果供电的IO单元正好分布在芯片四周，那我们可以采用power ring的形式来供电。如下图所示:

可以把它想象成一座桥梁，供电IO单元通过金属连接到ring，标准单元和macro分别通过followpin和stripes连接到ring，ring可以平均分布电流，缩短电流回路，更有效的减小电压降与电...]]></description><category></category></item><item><title><![CDATA[STM32启动文件代码分析]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86667980</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86667980</guid><author>sun_boy_boy_sun</author><pubDate>Sun, 27 Jan 2019 17:59:40 +0800</pubDate><description><![CDATA[

]]></description><category></category></item><item><title><![CDATA[http://www.openedv.com/posts/list/47444.htm 【转发】写得非常好的IAR启动STM32到Main详细过程。 [复制链接]]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86626491</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86626491</guid><author>sun_boy_boy_sun</author><pubDate>Thu, 24 Jan 2019 14:37:25 +0800</pubDate><description><![CDATA[最近要在Cortex-M3上写一个简单的操作系统，打算使用IAR，为了写好启动代码，花了一些时间了解了IAR在main()以前做了些什么事。
首先系统复位时，Cortex-M3从代码区偏移0x0000’0000处获取栈顶地址，用来初始化MSP寄存器的值。
接下来从代码区偏移0x0000’0004获取第一个指令的跳转地址。这些地址，是CM3要求放置中断向量表的地方。
这里是一个程序的启动区的反汇编：...]]></description><category></category></item><item><title><![CDATA[STM32 Bootloader与启动分析]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86624147</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86624147</guid><author>sun_boy_boy_sun</author><pubDate>Thu, 24 Jan 2019 11:57:11 +0800</pubDate><description><![CDATA[一、STM32 程序下载与Bootloader
&amp;nbsp;三种启动模式如下表：
（截图与stm32中文参考资料）
1、从主闪存存储器启动，即从STM32内置的Flash启动，BOOT0=0,BOOT1=X, 一般我们使用JTAG或者SWD模式下载程序时，就是下载到这个里面，复位（软件复位、手动复位、硬件自动复位）后也直接从这启动程序。不需要使用到系统存储区的Bootloader程序。
2、从系统...]]></description><category></category></item><item><title><![CDATA[stm32启动过程]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86624104</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86624104</guid><author>sun_boy_boy_sun</author><pubDate>Thu, 24 Jan 2019 11:54:51 +0800</pubDate><description><![CDATA[说明：本文是杰杰以前保存下来的，出处已经不知道在哪了，应该是各大论坛中，当然转这种文章，到处都有。今天我就把它重写一遍。基于原作者的内容添加一些内容（源码）讲解。杰杰水平有限，出错在所难免，还望各位大神指点一二。
startup_stm32f10x_cl.s
互联型的STM32F105xx，STM32F107xx
startup_stm32f10x_hd.s 大容量的STM32F101xx，STM...]]></description><category></category></item><item><title><![CDATA[UART寄存器]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86570530</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86570530</guid><author>sun_boy_boy_sun</author><pubDate>Mon, 21 Jan 2019 10:51:02 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/zengaliang/article/details/78313279

]]></description><category></category></item><item><title><![CDATA[SysTick时钟节拍的作用及间隔多少是合适的？]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86564556</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86564556</guid><author>sun_boy_boy_sun</author><pubDate>Sun, 20 Jan 2019 18:34:02 +0800</pubDate><description><![CDATA[



]]></description><category></category></item><item><title><![CDATA[Cortex M3核学习]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86562376</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86562376</guid><author>sun_boy_boy_sun</author><pubDate>Sun, 20 Jan 2019 15:15:05 +0800</pubDate><description><![CDATA[实验室的MCU项目中主要核心CPU使用的是Cortex M3 ，就此学习嵌入式工作组的头文件以及一些函数学习，作为自己嵌入式学习的入门，持之以恒，目标明年7月找工作之前能够比较熟悉的掌握了解嵌入式开发。
首先main.c一个简单的函数：
int main(void)
{
//  BSP_LED_Init();
//  delay_init();
//  	u8 flag = true;
// 	t...]]></description><category></category></item><item><title><![CDATA[串口波特率等概念（转https://blog.youkuaiyun.com/dagefeijiqumeiguo/article/details/68921820）]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86545284</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86545284</guid><author>sun_boy_boy_sun</author><pubDate>Fri, 18 Jan 2019 19:24:29 +0800</pubDate><description><![CDATA[篇一 : 串口波特率等概念
1：比特率：9600bps
就是每秒中传输9600bit，也就是相当于每一秒中划分成了9600等份。
如此，那么每1bit的时间就是1/9600秒=104.16666666666666666666666666667us。约0.1ms。既然是9600等份，即每1bit紧接着下一个比特，不存在额外的间隔。也不管是啥起始bit，数据bit，奇偶bit，停止bit。
2：帧格式...]]></description><category></category></item><item><title><![CDATA[SysTick以及抢占优先级Stm32]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86538768</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86538768</guid><author>sun_boy_boy_sun</author><pubDate>Fri, 18 Jan 2019 13:56:37 +0800</pubDate><description><![CDATA[



]]></description><category></category></item><item><title><![CDATA[转载https://www.cnblogs.com/yangguang-it/p/6719261.html/C语言Volatile编译器不要优化]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86518694</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86518694</guid><author>sun_boy_boy_sun</author><pubDate>Thu, 17 Jan 2019 09:57:41 +0800</pubDate><description><![CDATA[volatile译为：易变的。这不是和题目的让我保持原样矛盾了吗？其实不然，在变量前加上该关键字修饰，确实是告诉编译器，这个变量是一个容易改变的变量，不要对它进行优化，每次都要到变量的地址中去读取变量的数据，但正因为这样，才是保持了变量的原样，因为变量已经发生改变了，你却操作的是没有变化时的数据，这样才让变量失去了本应该保持的属性。
eg：
int a=1;
a=2;
a=3;
…
编译器看到这样...]]></description><category></category></item><item><title><![CDATA[利用动态内存分配创建堆栈.h头文件并调用例程]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86319567</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86319567</guid><author>sun_boy_boy_sun</author><pubDate>Fri, 11 Jan 2019 21:35:27 +0800</pubDate><description><![CDATA[1.首先，创建stack.h头文件，头文件中只用来声明函数及定义
/*一个堆栈模块的接口*/

#define STACK_TYPE int

/*push把一个新值压入堆栈，它的参数是需要压入的值*/

void push(STACK_TYPE value);

/*pop从堆栈中弹出一个值，并丢弃*/
void pop(void);

/*top返回堆栈顶元素，但不对堆栈进行修改*/
STAC...]]></description><category></category></item><item><title><![CDATA[C语言之联合与变体记录（转载https://blog.youkuaiyun.com/qq_31504597/article/details/79940765）]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86006475</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86006475</guid><author>sun_boy_boy_sun</author><pubDate>Mon, 07 Jan 2019 15:33:44 +0800</pubDate><description><![CDATA[结构体是将一个对象(内存空间)解释为C语言中多种类型的综合.
联合 是将一个对象(内存空间)在不同时候解释为C语言中不同的类型.
// 联合
union {
float f;
int i;
} fi;
1
2
3
4
5
当使用 fi.f 时, fi所占内存中的内容将被解释为一个float数; 当使用 fi.i 时, fi所占内存中的内容将被解释为一个int类型.
注意: 如果联合的各个成员具有不...]]></description><category></category></item><item><title><![CDATA[动态内存分配小结（转载）]]></title><link>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86002548</link><guid>https://blog.youkuaiyun.com/sun_boy_boy_sun/article/details/86002548</guid><author>sun_boy_boy_sun</author><pubDate>Mon, 07 Jan 2019 14:32:31 +0800</pubDate><description><![CDATA[转载https://www.cnblogs.com/3me-linux/p/3962152.html
malloc/calloc/realloc/alloca内存分配函数
calloc(), malloc(), realloc(), free(),alloca()
内存区域可以分为栈、堆、静态存储区和常量存储区，局部变量，函数形参，临时变量都是在栈上获得内存的，它们获取的方式都是由编译器自动执行的...]]></description><category></category></item></channel></rss>