道亦无名
王阳明曰: 立志 勤学 改过 择善
我曰: flag practice debug release
展开
-
大学就是一段路程的终点
大学就是一段路程的终点。表面上看,到公司工作就像是到一系列机构的下一站,但是本质上,一切都是不同的。学校的终点就是你生活的一个支点,这个 支点让你从纯粹的消费者走向了纯粹的生产者。告诉自己两件事。第一,遵循自己的内心和本能是没错的,要经常检验并足够谦逊地用你所学到的东西让你的思想得到进化。第二,要理解市场推广和营销。讲一个好听的故事是很困难的,但它可以阐述你的产品并帮助它从越来越拥挤的软件世界中脱颖而出。考虑周详的营销策略可以帮助你把这个故事讲给合适的听众。多年来,一些伟大的思想者和创造者和我分享了他们的一原创 2022-06-30 13:44:58 · 433 阅读 · 0 评论 -
RT-Thread 的架构
近年来,物联网(Internet Of Things,IoT)概念广为普及,物联网市场发展迅猛,嵌入式设备的联网已是大势所趋。终端联网使得软件复杂性大幅增加,传统的 RTOS 内核已经越来越难满足市场的需求,在这种情况下,物联网操作系统(IoT OS)的概念应运而生。物联网操作系统是指以操作系统内核(可以是 RTOS、Linux 等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread 就是一个 IoT OS。RT-Thread原创 2020-12-17 08:54:17 · 954 阅读 · 0 评论 -
RT-Thread Nano 简介
RT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通 过 MDK pack 方式发布,RT-Thread Nano pack 包括 device drivers、kernel 和 shell (msh) 三部分功能,用户可以从 MDK 的 Run-time Environment 按需要加 载。在支持 sem原创 2020-07-22 08:04:43 · 10323 阅读 · 0 评论 -
卡尔曼滤波
Kalman Filter是一个高效的递归滤波器,它可以实现从一系列的噪声测量中,估计动态系统的状态。起源于Rudolf Emil Kalman在1960年的博士论文和发表的论文《A New Approach to Linear Eiltering and Prediction Problems》(《线性滤波与预测问题的新方法》)。并且最先在阿波罗登月计划轨迹预测上应用成功,此后kalman filter取得重大发展和完善。它的广泛应用已经超过30年,包括机器人导航,控制。传感器数据融合甚至在军事方面的雷.原创 2020-07-03 23:13:25 · 1517 阅读 · 0 评论 -
linux下面的tcp编程
首先要建立服务器建立起socket,然后与本地的端口进行绑定,接着就开始接收客户端的请求并建立与它的连接,接下来,客户端发送的消息。tcpserver.c代码:int main(){ struct sockaddr_in server_sockaddr,client_sockaddr; int sin_size,recvbytes; int sockfd, client_fd;原创 2014-12-22 15:48:20 · 1250 阅读 · 0 评论 -
用C语言编写一个随机点名系统
/*编写一个随机点名系统,运行该系统后,按空格键可以显示出一名同学,以前被选中的同学,将不会再次被选中*/#include#include #include#include #include struct studentinfo { char sNo[5]; char sxueNo[14]; char sname[20];}st[100];int main(){原创 2014-11-22 17:05:47 · 25830 阅读 · 1 评论 -
bootloader
[Makefile][1] 规则 目标: 依赖 [TAB]命令(命令名 参数 依赖 目标) [2] 难点 1. 自动变量 作用域在一个规则中, 如: $@(目标, 每条规则都只有一个目标), $ 例: hello.o world.o: hello.h 等价于 hello.原创 2014-11-13 10:48:40 · 3435 阅读 · 0 评论 -
Boatloader的工作流程
(1)第一节阶段的功能1、硬件设备的初始化2、加载u-boot第二阶段的代码到我们的RAM空间3、设置好栈4、跳转到第二阶段的代码入口(2)第二阶段的功能1、初始化本阶段所使用的硬件设备2、检测系统内存映射3、将内核Flash读取到RAM中4、为内核设置启动参数5、调用我们多的内核为什么我们的bootloader有一段汇编代码?为什么不用C语言的原创 2014-11-11 15:01:27 · 3696 阅读 · 0 评论 -
基于FS4412平台的Linux系统移植
实验一 交叉工具链的安装【实验目的】 了解交叉工具链的编译过程及其使用。 说明:在实验中命令行提示符 为“$”表示在主机上运行,“#”表示在目标板上运行【实验环境】1、 ubuntu 12.04发行版2、 FS4412平台【实验步骤】1、 如果要自己编译工具链,从以下链接下载源码 crosstools-ng下载地址ht原创 2014-11-11 13:48:54 · 4710 阅读 · 0 评论 -
嵌入式工程师考试知识点总结 微内核结构
在操作系统的结构设计中,微内核结构表示的是A) 整体式结构B) 层次结构C) 分布式结构D) 客户机/服务器结构 微内核是指把操作系统结构中的内存管理、设备管理、文件系统等高级服务功能尽可能地从内核中分离出来,变成几个独立的非内核模块,而在内核只保留少量最基本的功能,使内核变得简洁可靠,因此叫微内核。微内核实现的基础是操作系统理论层面的逻辑功能划分。几大功能模块原创 2015-08-16 23:28:23 · 3444 阅读 · 0 评论 -
C++ 与 C 的规范不同之处
C++ 与 C 的规范不同之处 1、在每个类声明之后,每个函数定义结束之后都要加一行空格。2、在一个函数体内,逻辑上密切相关的语句之间不能加空行,而在逻辑上有区别的段落之间必须加空行。3、一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后应当加空格。4、代码行最大长度不能超过80个字符。5、修饰符靠近数据类型和变量名。6、C语言的注释为“/*..原创 2015-01-15 19:05:15 · 2767 阅读 · 0 评论 -
51单片机双机通讯
//两个单片机通讯,使用中断法#include #define uchar unsigned char#define uint unsigned int#define key_port P1#define dis_port P2void main (void){ uchar key_in=0xff; SCON=0x50; //MODER1,REN=1; TMOD=0x20原创 2015-01-27 15:38:11 · 8270 阅读 · 0 评论 -
串口波特率选择
波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MCS-51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。 在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波原创 2015-01-27 16:38:45 · 18365 阅读 · 0 评论 -
页面置换算法
最佳置换算法(OPT)这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10、100或者1000条指令后才会被访问,每个页面都可[1] 以用在该页面首次被访问前所要执行的指令数进行标记。最佳页面置换算法只是简单地规定:标记最大的页应该被置换。这个算法唯一的原创 2015-09-15 23:41:28 · 2967 阅读 · 0 评论 -
嵌入式工程师知识点(一)
1、引入中断技术可以使计算机的运行效率得到提高,下列哪一项对中断响应顺序产生影响?(A)A) 中断优先级B) 时间片大小C) 特权指令D) 中断向量2、在Pthread线程包中,线程操作pthread_join的含意是(C)A) 创建一个新的线程B) 撤销一个线程C) 等待一个特原创 2015-10-14 21:06:13 · 3136 阅读 · 0 评论 -
Linux环境编程2
如何通过程序实现获取环境变量的信息,这里可以做出来了。#include #include extern char ** environ;int main(){ char **env = environ; while (*env) { printf("%s\n", *env); env++; } exit(0);}执行之后的结果原创 2015-08-26 23:23:17 · 3121 阅读 · 0 评论