自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

好习惯成就伟大

欢迎光临本博客

  • 博客(46)
  • 资源 (4)
  • 收藏
  • 关注

原创 main函数和启动例程

汇编程序的入口是_start,而C程序的入口是main函数。汇编和链接步骤是:as hello.s -o hello.old hello.o -o hello以前我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件:gcc -S main.cgcc -c main.sgcc main...

2018-08-31 11:14:46 2107 1

转载 细谈C语言中的main返回值

C语言几乎是所有人的第一个编程语言,而main函数则又是我们接触到的第一个函数。我们的所有程序都需要main函数,对于下面的代码,相信大家再熟悉不过了。#include <stdio.h> void main() { printf("I am main function./n"); } 接下来再看一段很相似的代码#include <...

2018-08-31 10:55:28 6202 1

转载 进程控制原语

进程控制原语包括:进程的建立、进程的撤销、进程的等待和进程的唤醒。操作系统执行和监督进程控制操作,往往通过执行各种原语操作实现。计算机控制器的机器指令是微操作构成的,原语是机器指令的延伸,是由若干条机器指令构成用以完成特定功能的一段程序。操作系统执行和监督进程控制操作,往往通过执行各种原语操作实现。计算机控制器的机器指令是微操作构成的,原语是机器指令的延伸,是由若干条机器指令构成用以完成特...

2018-08-31 10:40:15 4604

转载 container_of 函数

在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr:        the pointer to the member...

2018-08-31 09:38:09 950

原创 linux应用程序中设置RTC

接触过Linux的朋友们都知道,linux内部的时间分为系统时间和硬件时间。系统时间一般是在系统启动时读一下RTC,然后就依靠定时器维护的时间,这个时间的是掉电不保存的。而硬件时间通常指的就是RTC,只要RTC有电池供电,这个时间是可以掉电保存的。系统时间在应用程序中,可以用gettimeofday() / setttimeofday() 读取和设置。硬件时间在终端中可以通过如下命令设置:...

2018-08-30 10:43:18 2083 4

转载 Keil(MDK-ARM)介绍、下载、安装与注册

Ⅰ、写在前面本文讲述的内容是Keil MDK-ARM版的介绍、下载、安装与注册,如果需要了解Keil C51版相关的文章,可以到我博客,或微信公众号查看并下载。 Keil(C51)介绍、下载、安装与注册:http://blog.csdn.net/ybhuangfugui/article/details/52932112 Keil MDK-ARM版本从V4升级到V5在架构上算...

2018-08-24 17:27:46 19273 4

转载 第4章 Cortex-M处理器的OS特性

本期教程带领大家学习Cortex-M处理器的OS特性,主要是M3和M4,M4和M3反应在RTOS上,主要区别是M4多了一个浮点单元,用户可以根据需要选择是否使用浮点单元。本期教程主要学CM内核的操作模式,特权等级和双堆栈机制。这部分知识学习起来比较的枯燥,但是作为初学者一定要将本期教程认真的多看几遍,有兴趣继续学的,还需上ARM的官网多找些相关的资料进行学习,可以这么说,这部分知识直接关系着你对一...

2018-08-24 14:43:30 1268

转载 Linux动态链接库的使用

1、前言  在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如读写文件,查找、排序。为了减少代码的冗余,提高代码的质量,可以将这些通用的部分提取出来,做出公共的模块库。通过动态链接库可以实现多个模块之间共享公共的函数。之前看《程序员的自我修养》中讲到程序的链接和装入过程,这些玩意都是底层的,对于理解程序的编译过程有好处。http://www.ibm.com/developerworks...

2018-08-23 11:34:45 5359

原创 【Board-SAMA5】vsftpd.conf

# Example config file /etc/vsftpd.conf## The default compiled in settings are fairly paranoid. This sample file# loosens things up a bit, to make the ftp daemon more usable.# Please see vsftpd.con...

2018-08-22 22:20:10 146

转载 【Board-SAMA5】500 OOPS: vsftpd: refusing to run with writable anonymous root

500 OOPS: vsftpd: refusing to run with writable anonymous root如果我们已经把vsFTPd服务器启动好了,但登录测试是会出现类似下面的提示;500 OOPS: vsftpd: refusing to run with writable anonymous root这表示ftp用户的家目录的权限不对,应该改过才对;[root@loc...

2018-08-22 21:47:40 285

转载 【Imp!!!】SNMP 的table

设计MIB文件mytableTest-MIB.txt: myTestTable DEFINITIONS ::= BEGIN IMPORTS     OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP         FROM SNMPv2-CONF     enterprises, Integer32, Unsigned32, O...

2018-08-22 15:05:32 562

原创 【Netsnmp】sendtrap.c

/* CpqArray Deamon, a program to monitor and remotely configure a SmartArray controller. Copyright (C) 1999-2003 Hugo Trippaers This program is free software; you can redistribute it a...

2018-08-22 10:38:45 610

转载 arm-none-linux-gnueabi交叉工具链与arm-linux-gcc 的区别

1)一般来说 arm-linux-gcc 是 arm-none-linux-gnueabi 的一个软链接。可用 ls -l 命令查看链接对象,用 ls -i 命令查看 inode 数值。 (2)arm-none-linux-gnueabi-gcc 只是告诉你支持eabi的功能,你当然也可以把这个名字改成arm-linux-gcc执行了,但是arm-linux-gcc的话是不可以直接改成a...

2018-08-21 16:42:26 4228 2

原创 Linux查看文件路径

Linux下有两个命令可以查看命令或者文件所在的位置1.whichwhich 用来查看当前要执行的命令所在的路径举个例子:[root@admin ~]# which python/usr/bin/python意思就是说:如果我直接输入 python ,那么输出的就是 python 命令的默认执行路径 即:/usr/bin/pythonwhich命令的原理:在...

2018-08-21 16:40:16 24756

原创 gcc -ldl 选项作用

如果你的程序中使用dlopen、dlsym、dlclose、dlerror 显示加载动态库,需要设置链接选项-ldl加载动态链接库,首先为共享库分配物理内存,然后在进程对应的页表项中建立虚拟页和物理页面之间的映射。你可以认为系统中存在一种引用计数机制, 每当一个进程加载了共享库(在该进程的页表中进行一次映射),引用计数加一;一个进程显式卸载(通过dlclose等)共享库或进程退...

2018-08-20 21:06:47 7187

转载 【NetSNMP##】 C语言发送SNMP Trap消息

项目需求系统利用SNMP Trap消息上报状态给NMS,考虑使用net-snmp提供的SNMP库函数实现该功能,且需要根据不同端口使用不同的session。1)头文件为了使用 netsnmp 的 API,必须 include 以下这些头文件:#include <net-snmp/net-snmp-config.h>#include <net-snmp/net-s...

2018-08-17 09:11:31 2653 1

原创 stm32 map文件

Component: ARM Compiler 5.06 update 4 (build 422) Tool: armlink [4d35d2]==============================================================================Section Cross References startup_stm32f1...

2018-08-16 15:59:36 1408 2

转载 STM32IAP升级------IAP升级功能编写初期的一些困惑与疑问---完成功能后的总结

IAP的源码等资料我上传了,压缩包内有12个文件,,http://download.csdn.net/detail/f907279313/7524849(要积分的辛苦收集的你们就给点积分吧)还有另一篇博客总结的IAP:http://blog.csdn.net/super_demo/article/details/32086541 一,网上下载的例程,跳转部分的代码有差异,尤其是用的汇编...

2018-08-16 11:35:10 452 1

原创 嵌入式工程师笔试题目(1)

嵌入式工程师对于工作来说最重要的就是面试+笔试了,作为一个面试过很多家的老鸟来说,总结了一些嵌入式工程师经典笔试题,而且也是很厂家的,快看看你都掌握了没1.给两个变量,如何找出一个带环单链表中是什么地方出现环的?一个递增一,一个递增二,他们指向同一个接点时就是环出现的地方1)。.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源3).不能做switch()的参数类型是:swit...

2018-08-16 09:38:18 6283

转载 Linux应用程序直接调用I2C控制器实现的设备驱动

参考内核源码里的dev-interface文档.在linux内核里i2c控制器驱动好后, i2c设备驱动方式通常由设备驱动通过控制器读写i2c设备数据、再提供应用程序调用和访问的接口. 除此设备驱动方工外,驱动好的i2c控制器也可提供应用程序直接调用控制器收发i2c设备数据的接口(dev-interface).这接口适用于一些没涉及到中断的简单设备,如dht12, eeprom等设备.内...

2018-08-12 16:48:33 540 1

转载 20 设备树里声明i2c设备

参考内核源码目录里的Documentation/i2c/instantiating-devices 文档里主要的内容:Method 1b: Declare the I2C devices via devicetree-------------------------------------------------This method has the same implication...

2018-08-12 16:31:11 1530

原创 linux-at91/Documentation/i2c/instantiating-devices

How to instantiate I2C devices==============================Unlike PCI or USB devices, I2C devices are not enumerated at the hardwarelevel. Instead, the software must know which devices are connec...

2018-08-12 16:22:46 295

原创 drivers\i2c\busses\i2c-gpio.c

/* * Bitbanging I2C bus driver using the GPIO API * * Copyright (C) 2007 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the G...

2018-08-11 20:43:58 943

原创 void * 是什么?

最近遇到void *的问题无法解决,发现再也无法逃避了(以前都是采取悄悄绕过原则),于是我决定直面它。在哪遇到了?线程创建函数pthread_create()的最后一个参数void *arg,嗯?传地址还是传值?传值好像有警告。还有别的出现的地方呢看memcpy(),返回值和参数都有void *,那又怎么传呢?下面我们首先来说说void *是什么。一:void *是什么?...

2018-08-10 14:27:16 11924 1

转载 嵌入式linux系统下简单守护进程(daemon)的编写 【面试—守护进程】

原文地址最近公司项目需要,需要在我们的嵌入式linux设备中创建一个守护进程,用于保护系统中的主进程,防止某些不可预期的意外导致主进程异常结束后,系统完全宕机没有任何反应,破坏用户体验感。但是,查阅诸多资料之后发现,大部分人都只讲述了如何在x86平台上创建和实现守护进程,而并没有人介绍过如何在嵌入式平台上创建和实现守护进程。于是,经过一番摸索之后,从原理到代码,都进行了一些大致的了解,我自己提...

2018-08-07 15:29:03 1538

转载 2018年年初的面试经验谈

说下我的面试经验吧,都是亲身经历,不喜勿喷:我去年12月份从上一家公司离职,一直到今年3月份,基本上都在面试中度过来的。先交代下背景:坐标上海,做技术开发,我本人面试的职位是linux服务器开发,最倾向的职位是服务器开发主程或技术经理。我本人也是上几家公司的面试官,因为接下来几年面临着成家养小孩,技术上也到了瓶颈期,虽然拿了不少offer,但是想综合比对一下,于是就参加了很多的面试。我先后去了...

2018-08-07 13:46:45 1428 2

转载 双向链表的基本操作

学过单向链表的小伙伴都知道单向链表中的每一个节点有且只有一个指针,这个指针就是用来指向下一个节点的,单向链表顾名思义就是链表方向是单方向的,而本文要介绍的双向链表就是链表方向是双方向的,也就是双向链表中的每一个节点有两个指针,一个指针用来指向上一个节点(前驱),另一个指针用指向下一个节点(后继)。 本文主要是总结一下自己对双向链表的基本操作,当然我也只是写了几个比较简单的操作,其中包括双向...

2018-08-07 11:19:07 2767

转载 C语言中的字节对齐

1、什么是对齐?现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序地一个接一个地排放,这就是对齐。2、为什么要对齐?为了提高效率,计算机从内存中取数据是按照一个固定长度的。以32位机为例,它每次取32个位,也就是4个...

2018-08-07 10:15:59 404

转载 软件研发和嵌入式软件研发面试经历

今年的就业形式不太好,在过去的两个月,一直处于奔波的状态。今天总算把自己签了出去。首先,要感谢家人、朋友和老师的鼓励和帮助。对自己的面试经历理了理,过去两个月,居然面了多达14家公司。不做统计,不知道有多么悲催,呵呵。这篇文章,是对自己面试的一个总结,主要包含面试中问的问题,以及自己失误的地方。第1家,是PPS-上海众源网络,嵌入式开发工程师笔试过后,获得了面试机会,PPS总共2面。第一面...

2018-08-07 09:27:23 1047

原创 嵌入式工程师笔试题目(2)

从CSDN各个博客上摘选的一些容易做错的嵌入式软件的笔试题,做一下记录,让自己记住。文章转自:嵌入式经典面试题。1、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)解答:这一题主要容易错的地方就是:意识到这个表达式将使一个16位机的整型数溢出,因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 #define SECONDS_PER_Y...

2018-08-06 21:06:16 11184

转载 【嵌入式基础】2019大疆嵌入式笔试题A卷(附超详细解答)

原文地址前不久的大疆嵌入式线上笔试,可能是因为最近只是在做毕设项目,还没有来得及认真系统复习,直接崩了。就凭借着记忆,把一些记得住的笔试题分享一下,作下记录。整个大疆嵌入式线上笔试,分为选择题(单选题、多选题)、填空题、简答题、编程题。也没有将所有的题目都记得,就分成填空选择题、简答题和编程题三块来介绍吧。 填空选择题1、ARM指令和Thumb指令。(选择题)解答:在ARM...

2018-08-06 18:51:42 7698 1

转载 华为--嵌入式软件工程师面试题汇总

(1)什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。(2)char * constp      char const * p     const...

2018-08-06 15:02:16 659

转载 C语言的未定义行为(undefined behaviour)

什么是未定义行为简单地说,未定义行为是指C语言标准未做规定的行为。编译器可能不会报错,但是这些行为编译器会自行处理,所以不同的编译器会出现不同的结果,什么都有可能发生,这是一个极大的隐患,所以我们应该尽量避免这种情况的发生。特征包含多个不确定的副作用的代码的行为总是被认为未定义。(简单而言, “多 个不确定副作用” 是指在同一个表达式中使用导致同一对象修改两次或修改以后 又被引用的...

2018-08-06 14:48:24 1169

转载 为何printf()经常有重入和性能上的问题

转载:这个概念在嵌入式操作系统中比较重要,由于存在任务的调度,它实时系统,可剥夺型内核中是危险的,如同一个安静的水雷。可能会被触发,也可能安然无恙。由于它运行结果的不可预期性,会使系统带来隐患。printf()经常有重入解释不可重入函数不可以在它还没有返回就再次被调用。例如printf,malloc,free等都是不可重入函数。因为中断可能在任何时候发生,例如在printf执行过程中,...

2018-08-06 09:50:38 975

原创 【Interview###】华为、中兴嵌入式(C)笔试题

【程序员面试宝典】1读程序段,回答问题(a)int main(int argc,char *argv[]){int c=9,d=0;c=c++%5;d=c;printf("d=%d\n",d);return 0;}a)写出程序输出b)在一个可移植的系统中这种表达式是否存在风险?why?答案:5存在风险,因为c=c++%5;这个表达式对c有两次修改,行为...

2018-08-06 08:40:40 11825

转载 【转】15 内核里leds-gpio设备驱动的设备树方法

在linux内核里已提供了连接到gpio的led设备驱动,只需要通过platform_device或设备提供相应的硬件资源即可. 使用platform_device方法可参考: http://blog.csdn.net/jklinux/article/details/73850470内核里的leds-gpio设备驱动配置选项:make menuconfig ARCH=arm64 CRO...

2018-08-05 17:20:29 2325

原创 /sys/bus/platform/drivers

/sys/bus/platform/drivers # ls -ltotal 0drwxr-xr-x    2 root     root             0 Aug  5 15:20 alarmtimerdrwxr-xr-x    2 root     root             0 Aug  5 15:20 at91_adcdrwxr-xr-x    2 root    ...

2018-08-05 16:53:41 1643

原创 drivers/char/atmel_sama5_gpio.c

/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#incl...

2018-08-04 12:41:20 404

转载 include/linux/fs.h struct file_operations

struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, co...

2018-08-04 11:13:30 1027

转载 linux/fs/char_dev.c

/* * linux/fs/char_dev.c * * Copyright (C) 1991, 1992 Linus Torvalds */#include <linux/init.h>#include <linux/fs.h>#include <linux/kdev_t.h>#include <linux/slab.h>...

2018-08-04 11:08:59 454

Linux应用开发第十四章CAN编程应用开发 源码

Linux应用开发第十四章CAN编程应用开发 源码

2024-04-03

蓝牙低功耗 知识讲解

关于蓝牙低功耗的讲解,主要包括蓝牙历史,蓝牙的体系结构

2018-06-27

listen-on-ipv4-and-ipv6-interfaces.py

Receive SNMP TRAP messages with the following options: SNMPv1/SNMPv2c with SNMP community “public” over IPv4/UDP, listening at 127.0.0.1:162 over IPv6/UDP, listening at [::1]:162 print received data on stdout

2018-04-17

基于MP430的示波法血压计设计

基于MP430的示波法血压计设计,希望能给你一点点思路

2014-10-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除