从黑盒、概念到框架之重要概念分析总结

黑盒理论:入门视频中几乎全部是以“普通用户”的方式去教大家,这表明目前学习状态只需要学会使用,熟练操作即可。


需要额外介绍和理解的概念
1 交叉编译的概念和相关知识
    在PC上编译,在嵌入式设备上运行,从操作系统编译到应用都是这样。
    应用X86和ARM编译举例:
    gcc -o hello hello.c    file hello ./hello
    arm-none-gcc... -o hello hello.c file hello
    
    系统源码编译:
    uboot、kernel以及qt文件系统也是需要arm编译器;
    Android源码的编译器是gcc和jdk,它和交叉编译器无关,另外还有NDK编译器;
    android系统下也有一些基础的linux命令,这些命令可以通过工具来扩展,这些是通过交叉编译器来实现的。
    
    4412上的android系统是32位还是64位的? 
    android4.4版本是不区分32位和64位,从gcc编译器来看,应该是64位的。
    为什么4412是32位,可以运行android的64位呢?linux系统有虚拟文件系统,是这个功能实现跨文件系统。
    
2 linux命令和配置文件(环境变量)
    linux思想来理解部分内容
    1 一切皆文件;2 文本形式保存配置文件;3 提供机制而非策略;4 尽可能避免和用户交互
    6 单一目的的小程序;6 组合小程序完成复杂任务
    
    大部分命令都在/bin目录下
    linu命令是什么-本质是小程序。
    增加一个例子:实现简单的myecho。
    1 在当前目录下测试可以运行;
    2 放到/bin目录下,全部可以运行;
    3 添加/home/test(echo $PATH ;export PATH=$PATH:/home/test)路径到环境变量下,
    /bin目录下的myecho删除(注意不要删错),可以运行。
    
3 内核编译常见问题:自己编译内核镜像之后为什么烧写之后,启动之后会有报错
    需要使用cp命令配置内核!.config文件可以看做编译时候使用的工具。
    .config中全部是宏定义--C语言中使用宏定义实现预处理
    类似这样的代码:
    #if xxx
    #define xxx
    ...
    #endif
    或者
    #if xx
        ...
    #elif xx
        ...
    #
    其中的...不仅表示具体的代码,还有 编译脚本文件中 的 编译源码代码。
    
    这部分需要先严格按照用户手册中的配置说明,先配置缺省文件,然后再编译kernel镜像。
    
4 emmc中的uboot坏了之后系统如何启动?
    用户手册和视频教程上有介绍如何具体操作。
    几乎所有的处理器都可以设置启动模式,
    4412芯片内部有一段代码,通过设置一些IO(拨码开关)的电平,实现这段代码最终跳转到mmc还是tf卡。

    
myecho.c源码
#include <stdio.h>

void main(char argc,char *argv[])
{
        while(--argc){
                printf("%s",argv[argc]);
        }
        printf("\n");
}

发布了37 篇原创文章 · 获赞 0 · 访问量 2397

猜你喜欢

转载自blog.csdn.net/Linux_zhicheng/article/details/100051529