嵌入式笔记
文章平均质量分 73
QQQ心心QQQ
这个作者很懒,什么都没留下…
展开
-
嵌入式面试汇总(更新中)
答:extern答:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错这个函数有太多的错误了,以至让人不知从何说起了:1)ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。2) **ISR 不能传递参数**。如果你没有看到这一点,你被雇用的机会等同第一项。3) 在许多的处理器/编译器中,浮点一般都是不可重入的。原创 2023-08-19 16:27:02 · 528 阅读 · 0 评论 -
嵌入式面试7
答:extern答:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错这个函数有太多的错误了,以至让人不知从何说起了:1)ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。2) **ISR 不能传递参数**。如果你没有看到这一点,你被雇用的机会等同第一项。3) 在许多的处理器/编译器中,浮点一般都是不可重入的。原创 2023-08-09 17:06:55 · 505 阅读 · 0 评论 -
嵌入式面试7---进程or线程or同步
重定向:文件标识符是从0到9结束的整数,指明了与进程有关的特定数据流源。解析:首先,父进程fork后,给父进程返回子进程pid,此时为真,逻辑或语句不再执行,但是fork出的子进程是复制的父进程,此时PC程序指针也在当前位置,而且子进程的返回值是0,逻辑或语句为假,继续执行,注意此时进入子进程,多以子进程fork出孙子进程,不论子进程返回的是孙子进程的pid,还是孙子进程返回的是0,已经没有代码了,程序停止,main函数结束。管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。原创 2023-08-07 20:45:47 · 823 阅读 · 0 评论 -
嵌入式面试5 -makefile shell
===原创 2023-08-07 20:44:45 · 881 阅读 · 0 评论 -
嵌入式面试4 Linux编程
答:Linux一切皆文件,那么作为一个设备文件,它的操作方法接口封装在struct file_operations,当我们写一个驱动的时候,一定要实现相应的接口,这样才能使这个驱动可用。实现的接口有read,write,ioctl,遵循的框架有字符设备的注册与销毁,模块的注册与销毁。// (以文件尾为基准偏移0字节)将文件内部指针放到文件最后面,便于获取文件总长度。答:系统的暂停程序,按任意键继续,屏幕会打印,”按任意键继续。// 读取文件指针的位置,得到整个文件字符的个数。,使得他们就像本地函数一样。原创 2023-08-07 20:44:10 · 536 阅读 · 0 评论 -
嵌入式面试3
1.线程与进程的区别和联系?线程是否具有相同的堆栈?dll是否有独立的堆栈?进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。DLL中有没有独立的堆栈,这个问题不好回答。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?原创 2023-08-07 20:43:31 · 517 阅读 · 0 评论 -
嵌入式面试2
第四个意思a是一个指向整型 数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数 是不可修改的,同时指针也是不可修改的)。Bit fields是被扔到C语言死角的东西,它保证你的代码在不同编译器之间是不可移植的,同时也保证了的你的代码是不可重用的。我最近不幸看到 Infineon为其较复杂的通信芯片写的驱动程序,它用到了bit fields因此完全对我无用,因为我的编译器用其它的方式来实现bit fields的。原创 2023-08-07 20:42:20 · 799 阅读 · 0 评论 -
嵌入式面试题1
理论上是这样的,首先是i在相对0的位置,占8位一个字节,然后,j就在相对一个字节的位置,由于一个位置的字节数是4位的倍数,因此不用对齐,就放在那里了,然后是a,要在3位的倍数关系的位置上,因此要移一位,在15位的位置上放下,目前总共是18位,折算过来是2字节2位的样子,由于double是8 字节的,因此要在相对0要是8个字节的位置上放下,因此从18位开始到8个字节之间的位置被忽略,直接放在8字节的位置了,因此,总共是16字节。的p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。原创 2023-08-07 20:41:38 · 633 阅读 · 0 评论 -
c/c++面试题
c/c++原创 2023-07-28 15:21:47 · 220 阅读 · 0 评论 -
rt-thread In function `_sbrk_r‘: sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sb 修改
Console-Error: 请启用libc组件。原创 2023-07-08 17:37:36 · 354 阅读 · 0 评论 -
rt-thread串口与库函数串口例程
在应用程序调用 rt_device_write() 写入数据时,如果底层硬件能够支持自动发送,那么上层应用可以设置一个回调函数。解析数据线程会尝试读取一个字符数据,如果没有数据则会挂起并等待信号量,当串口设备接收到一个数据时会触发中断并调用接收回调函数,此函数会发送信号量唤醒线程,此时线程会马上读取接收到的数据。串口接收不定长数据需要用户在应用层进行处理,一般会有特定的协议,比如一帧数据可能会有起始标记位、数据长度位、数据、终止标记位等,发送数据帧时按照约定的协议进行发送,接收数据时再按照协议进行解析。原创 2023-07-08 09:33:43 · 728 阅读 · 0 评论 -
rt-thread简单设备驱动编写
RT-Thread 的设备模型是建立在内核对象模型基础之上的,设备被认为是一类对象,被纳入对象管理器的范畴。每个设备对象都是由基对象派生而来,每个具体设备都可以继承其父类对象的属性,并派生出其私有属性,下图是设备对象的继承和派生关系示意图。rt_device_control函数。驱动创建和注册相关函数原型。原创 2023-07-07 20:36:24 · 537 阅读 · 0 评论 -
linux网络编程笔记
可以设置的选项有:(O_APPEND,O_ASYNC,O_DIRECT,O_NOATIME,O_NONBLOCK)网络编程中对于数据的输入/输出的方式:阻塞IO、非阻塞IO、信号驱动、多路复用。非阻塞IO:和阻塞IO相反,不会等待数据到来,如果没有数据到来直接返回失败。函数本身其实并不会阻塞,而是因为里面的参数而阻塞,例如文件描述符。信号驱动:当文件描述符有数据到来时其实会产生一个信号:SIGIO。而这个信号的产生需要设置文件描述符的属性:O_ASYNC。思考:当文件描述符产生了信号后,这个信号发给谁?原创 2023-06-22 20:24:31 · 104 阅读 · 0 评论 -
linux网络编程笔记2----------tcp
struct sockaddr *addr:存放连接对象的IP地址和端口号。先建立连接,连接成功后就可以正常通信,如果有任何一方断开,通信都会结束。客户端的套接字,服务器的套接字依旧是监听套接字,可以继续监听连接请求。ACK 确认位,ACK=1表示有效,无值表示无效。如果还有连接请求,就可以再继续返回新的套接字。SYN 同步位,表示请求连接,一般为1。FIN 取消位,表示请求断开,一般为1。int flags:发送标志,默认填0。发送连接请求给对方,等待对方建立连接。思考:连接成功后返回的套接字是谁的?原创 2023-06-22 20:23:31 · 65 阅读 · 0 评论 -
linux网络编程笔记--tcp/udp
OSI模型在发送的过程中:数据从应用层出发,每经过一层就会在数据后面加上这一层的"头",除了最后的物理层。OSI模型在接收的过程中:数据从物理层传入,每经过一层就会去掉一层的"头",最后到的应用层就只剩数据了。const struct sockaddr *addr:存放要绑定的IP地址和端口号的结构体的地址。int af:要转化的地址类型(AF_INET:IPv4 / AF_INET6:IPv6)linux下的网络通信使用的是套接字,那么根据使用通信协议不同,创建的套接字也不同。原创 2023-06-22 20:22:01 · 152 阅读 · 0 评论 -
linux io操作------标准IO输入输出函数之get与put系列
int size:要获取的字符串的长度(size最好多设置一位,因为fgets默认最后一个字节会给’\0’)因为gets没有定义缓冲区的大小,容易造成缓冲区溢出,导致段错误,但在某些编译器中可以使用。putc和fputc可以向指定文件中输出,但如果没有正常关闭文件,是无法保存到文件中去。思考:如果文件中没有数据,使用getc或fgetc去获取一个字符,结果会如何?结果:不会阻塞,因为文件没有行缓冲机制,返回值为-1,因为定位相当于在文件末尾。int c:要输出的字符,可以是ASCII码,也可以是字符数据。原创 2023-05-06 14:22:37 · 552 阅读 · 0 评论 -
linux 标准io笔记+简单的账户管理系统
这里的字符串指的是字符型数组,如果填字符型指针,那么这个指针必须指向的是可写入数据的内存地址。结果:前一个字符串不能拆分,后一个字符串可以拆分,因为前一个字符串在获取hello这部分时,练习:做一个简单的管理系统,有注册功能,将数据保存到一个文件里面,运行程序都能读取文件内容。思考:设两个文件分别有24字节和21字节,按每块5字节的方式读取5块数据,返回值为多少?思考:设buf中有24字节和21字节两种情况,按每块5字节的方式写入5块数据,结果如何?const char *path:要打开的文件的路径名。原创 2023-05-06 10:00:39 · 100 阅读 · 0 评论 -
linux--文件io笔记+练习--复制一个文件
结果:打开失败,因为open里的参数只是决定打开文件后以什么方式去操作,实际还要根据文件可支持的操作来决定。但它和文件夹有本质的区别,文件夹是包含的关系,文件夹里面包含了文件,系统打开文件夹,找到里面的文件。而目录是索引关系,,目录里面记载了文件的索引信息,系统通过目录里保存的文件索引去找到文件进行操作。linux下的所有文件都有三组权限:文件所有者、所有者同组成员、不同组成员对文件的操作权限。在打开文件后,后续的所有操作都是根据文件描述符来进行,这个文件描述符就代表这个文件。原创 2023-05-05 09:15:06 · 386 阅读 · 0 评论