初识苏嵌
暑假实习在期盼中、困苦中、烦恼中渐渐到来了。之所以期盼是因为我一直很想有个实习的机会,很想对未来就业方向有点认知。但是又很困苦和烦恼,是因为报了考研辅导班正好和实习冲突。但这几天我还是定下了心来好好跟着老师学习嵌入式,两天下来我们跟别的同学比较发现真正学到东西的还是苏嵌。
前段时间听我一个朋友说正在自学Linux操作系统,听他说Linux 如何如何操作,和Windows XP 和 Windows 2007 等操作系统有哪些不同,当时听的挺神奇的没想到机会真的来了。终于小小的满足了我的一点心愿。实习第一天,我们了解到了进入嵌入式这个行业需要付出的努力,以及未来所得到的回报,可以用一句诗来表述“宝剑锋从磨砺出,梅花香自苦寒来”。
第一天我们学到的是嵌入式开发概述及开发工具的使用,嵌入式的定义如下:
(1) 从技术要求上:以应用为中心,以计算机技术为基础,软硬件裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统,是将应用程序,操作系统和计算机硬件集成在一起的系统。
(2) 从系统角度:是设计完成复杂功能的硬件和软件。并使其紧密耦合在一起的计算机系统。
再有我们知道了操作系统的组成:软件平台(操作系统和应用程序)
硬件平台(外围设备和处理器)
之前我们所了解的嵌入式是应用仅仅是手机、我们的饭卡、身份证等,经过老师的介绍才发现嵌入式涉及到我们生活的方方面面以及各行各业,大到航天、军事,小到我们生活用品、通讯设备无所不至。
嵌入式的开发工具就是Linux 操作系统,在老师的带领和同学的帮助下我们大家都学会了安装Linux 操作系统,并掌握了一些命令的使用方法和格式:
ls 命令 功能:显示指定文件或指定目录中的所有文件的信息。
Cd 命令 功能:改变当前目录为指定的目录。
Cd / 表示根目录
Cd。。退出至上层目录
Cd /home/ 绝对路径
Mkdir命令 功能:建立目录;
Cat 命令 功能:显示文件内容。
Rm 命令 功能:删除文件。
Mv 命令 功能:移动文件、重命名文件。
Touch 命令 功能:修改文件的修改时间和访问时间标签为现在时。
Pwd 命令 功能:查看当前文件的绝对路径。
通过这几天的学校,我学会了静态库的创建:
gcc –c 源文件.c
ar rcs 静态库名目标文件1 目标文件2
rc:静态库不存在,就创建该库文件
s:更新库文件
实验练习如下:gcc –c main.c
再有还学习了工程管理器,其顼名思义,是指管理较多的文件Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作. makefile是make读入的惟一配置文件,因此本节的内容实际就是讲述makefile的编写规则。在一个makefile中通常包含如下内容:
a.需要由make工具创建的目标体(target),通常是目标文件或可执行文件;
b.要创建的目标体所依赖的文件;
创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键)开头.
实验练习如下:
Hello: main.o add.o sub.o mul.o chu.o
Gcc main.o add.oub.o mul.o chu.o –o hello
Main.o: main.c
Gcc –c main.c
Add.o:add.c
Gcc –c add.c
Sub.o:sub.c
Gcc –c sub.c
Mul.o: mul.c
Gcc –c mul.c
Chu.o:chu.c
Gcc –c chu.c
.PHONY :clean
Clean:
Rm –f hello main.o add.o sub.o mul.o chu.o
这几天的学习不但提高了我键盘打字的熟练度。而且巩固了我之前学过的C语言知识如:变量的定、数组的定义、指针的定义、结构体的定义,以及它们的使用方法.
在此期间我学会了编写如下程序:
1、#include <stdio.h>
int main ()
{
int i,m,n;
int count = 0 ;
int flag;
printf ("please input the number n:\n");
scanf ("%d",&n);
for (i = 1; i <= n; i++)
{
m = i;
while (m)
{
flag =m % 10;
if (flag == 9) count++ ;
m = m / 10;
}
}
printf ("\n the end of 9 is %d\n",count);
return 0 ;
}
2、#include <stdio.h>
int main()
{
int i,k,m,n,num[50],*p;
printf("input number of person: n=");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i=1;
i=0;
k=0;
m=0;
while(m<n-1)
{
if(*(p+i)!=0)
k++;
if(k==3)
{
*(p+i)=0;
k=0;
m++;
i++;
if(i+=n)
i=0;
}
while(*p==)
p++;
printf("The last one is No.%d\n,*p);
}
}
3、.#include <stdio.h>
void my_strcpy (char *dest, const char *src)
{
int i=0 ;
while ((*(dest++) = *(src++)) !='\0');
while (src[i] !='\0')
{
dest[i] = src[i];
i++;
}
}
4、.void str_cat (char *dest ,const char *src)
{
int i = 0,j = 0;
while (dest[i] != '\0')
{
i++;
}
while (src[j] !='\0')
{
dest[i] = src[j++] ;
printf("dest = %s\n",dest);
i++ ;
}
dest[i] = '\0' ;
}
以及一些加减乘除的小程序。进过四天的学习改变了我以前害怕C语言的心态,在剩下的几天我一定会好好把握珍惜这个难得的实训机会。