明确一下自己要单片机还是linux方向
单片机的话,建议看正点原子或者野火,韦东山他们的stm2视频。学学串口,中断,GPIO,DMA,ADC知识基本的学完这些以后,可以学一个RTOS可以是freertos或者rtthread,然后建议往物联网方向整个wifi或者ble的项目,对找工作是加分项。
具体可以买块安信可/乐鑫的esp2,esp进行学习,这里介绍两个做蓝牙WIFI教程的博主。
一个是半颗心脏的博主徐宏,安信可模组商的大佬可以看他的博客资料还有视频资料专门讲怎么用wifi,ble做项目。
CSDN博客主页:(5条消息)欢迎进入半颗心脏博客导航一站式搜索(所有博客的汇总帖)_半颗心脏的博客-CSDN博客
另外一个是wireless_Link的博主,看他的博客资料他自己也做蓝牙开发板,在蓝牙车载领域里有多年的开发经验,也有WIFI单片机开发板教程资料,也有ESP2开发板拿来做教程
CSDN博客:(5条消息)Wireless_Link的博客_CSDN博客-蓝牙协议剖析,蓝牙协议栈精讲,stm2领域博主
linux的话可以按我下面的说
Linux基础及环境搭建
需要掌握的知识点如下:
1、环境的搭建:ubuntu,vmware安装
2、Linux目录下结构
、基本命令掌握如目录操作,文件操作操作,文件查找搜索等,最关键要会gcc命令使用
4、一些简单的shell脚本使用
5、Makefile的编写
个人建议学习以上内容可以看看b站的视频按照我列举的知识点进行按需学习,其中shell和Makefile的基本语法建议看一些开源项目源码学习如bluez,bluealsa等等看懂大型项目如何编写,语法要看懂,自己会写简单的就可以了
掌握C语言这部分学到指针那里,因为C语言的精髓是指针,不会指针等于不会C语言
这里建议去b站看郝斌的视频或者看看朱老师的C语言的教程,他们的视频风趣幽默且详细易懂,这里一定要亲自动手去敲,建议看三遍
GDB调试写应用程序必不可少的会出现野指针出现段错误,Linux下没有IDE环境,要学会用GDB工具去调试,这里就多看看博客进行调试
推荐的gdb教学网站
1.gdb调试利器—LinuxToolsQuickTutorial(linuxtools-rst.readthedocs.io)//linux性能工具调试,非常重要
数据结构这里的知识比较难啃,不经常很容易忘记。这里建议学会链表和队列,源码可以看看Linux内核里的list,c,queue.c和list.h,queue.h
视频的推荐也是去看郝斌的数据结构,一定要跟着动手去敲代码,建议看三遍
1、看完之后能掌握常见的算法比如:冒泡排序,直接插入,快速排序等
2、链表:双向链表,增删改查
文件IO需要掌握的知识点
1、掌握Linux文件IO的一套系统调用API:open、read、write、lseek,close等。
2、熟练写出文件拷贝等功能模块。
、理解I/O、缓冲的概念。
在Linux下,一切皆文件,我们操作操作许许多多的外设(字符设备、套接字、文件等等)就像操作文件一样。要想知道如何操作文件和外设,我们就必须熟练掌握文件IO,这是我们学习Linux下面编程最基本的知识点。
这里建议看看博客如何写出文件拷贝等功能的文章或者朱老师的视频,再去独立自己写。
系统编程1、进程与线程的概念
2、掌握常用的函数fork函数等api;
、进程创建、回收;
4、常用的进程相关命令:ps、top,vmstat;
5、进程间通信:信号量、消息队列、共享内存、管道、信号;
6、守护进程;
7、线程创建、同步互斥,互斥锁;
8、库的概念,什么是动态库和静态库,如何自己制作动态库和静态库。
多进程、多线程是我们学习Linux下系统编程是项目中非常重要的一个知识点,必须掌握。
这里建议针对不同知识点建议看看朱老师的视频或者其他b站视频
网络编程1、TCP/IP协议分层以及每一层的功能;不要看OSI,只要知道即可;
2、socketapi的使用,
、tcp、udp;C/S架构如何创建;
4、套接字属性的设置;
5、C/S架构
6、tcpdump进行抓包,wireshark去看包
网络的知识太复杂了,许多大厂应用开发都是必备要求,网络编程、TCP/IP协议栈、网络拓扑、网卡驱动、各种无线通信协议。对于嵌入式方向的初学者,我们最好先了解一些基础的网络协议知识,然后学习套接字的使用。
建议看看唐佐林老师的视频或者其他b站视频
数据库这里建议学习Mysql数据库小巧又免费包括数据库概念、数据库管理系统、SQL语言等。建议学习路线如下:
1、了解MySQL基本概念和安装配置。
2、学习SQL基本语法,包括数据类型、数据库对象、数据操作语句等。
、学习MySQL的高级功能,如索引、事务、触发器等。
4、学习MySQL的优化技巧,如性能优化、索引优化等。
学习数据库方便记录之前的联系人或者说同学名字挺方便,做应用的人还是要学习下
建议看看b站视频
LinuxC应用项目该阶段可以看看博客上的《多线程聊天室》,实现多线程与服务器的收发、注册登录,给服务器互相发送消息等功能。
学完上述内容,可以找个LinuxC的工作。如果想找嵌入式linuxC的工作就要学习下面的内容,需要买个ARMLinux板子,推荐imx6ull板子
构建最小系统了解一下linux启动流程,了解如何用busybox,buildroot构建最小的文件系统。就知道如何在如何在arm板子跑应用程序。
建议看看,韦东山的b站视频,多看三遍加深了解
ARMLinuxC应用项目学会上面的知识就可以在ARM板子搞项目了,推荐的学习韦东山的第三期项目视频中的数码相框,或者淘宝朱有鹏上面买个图片解码器的项目视频自己做做难易程度适中,适合初学者的项目,跟着边看边做不会的地方多看几遍,做完该项目就可以找个linuxC应用的工作
号外打个广告,笔者整理写了一个面试指南文档主要是关于嵌入式相关的秋招面试内容,有需要的小伙伴可以私聊我需要付费,下图是整理的目录内容
个人总结的一些嵌入式有关的书籍资料需要的自取
链接: