ARM-Linux学习 第一天

GEC6818的学习

此次学习,是本人在学校的实训课的记录。
嵌入式处理器
作用:软件的执行、数据的处理、硬件的控制。
处理器的型号:S5P6818;厂家:samsung;架构:ARM;开发板的名字:GEC6818

 什么是ARM? 1、ARM--Advanced RISC  Machine 高级的精简指令集计算机的机器
                      2、ARM是一种处理器的架构(除了ARM架构:x64/x86、MIPS、RISC-V)
                      3、ARM是一种32位的单片机(AT32),也可以是一种64的处理器(手机处理器)
                      4、ARM是一家公司的名字,中文名安谋。
 常见的ARM的系列:1、Cortex-M系列,包括内核Cortex-M0、Cortex-M3(STM32F103)、Cortex-M4(AT32F435)---主要是作为32位的单片机
                               2、Cortex-A系列,包括Cortex-A53(S5P6818)、Cortex-A55、Cortex-A72 ---- 主要是作为64位的处理器
  总结:综合实训项目使用的开发板GEC6818,开发板上的处理器S5P6818,处理器的架构是ARM架构、S5P6818是ARM的Cortex-A系列处理器,该处理器使用的ARM内核是Cortex-A53。S5P6818处理器主频1.4GHz,处理器是8核64位的处理器。

嵌入式Linux系统启动顺序

运行一个启动引导程序(u-boot)—>加载并运行Linux内核—>挂载根文件系统—>启动应用程序。

开发板入门使用

安装交叉编译环境

因为用的是arm架构,而不是x86。所以我们需要利用arm-linux-gcc来编译文件,再将.out可执行文件移植到单片机上。

arm-linux-gcc demo1.c -o demo2 //demo1.c 源文件 demo2目标生成文件

文件上传

(1)使用RS232串口将电脑与单片机相连,通过串口工具进行通信(我这里使用的是SecureCRT),按下CTRL+C进入命令行模式。
在这里插入图片描述
(2)开发板端接收文件
[root@GEC6818 /test]#rx demo2
C

(3)PC机端发送文件
开始 xmodem 传输。 按 Ctrl+C 取消。
100% 7 KB 7 KB/s 00:00:01 0 Errors

[root@GEC6818 /test]#

(4)给demo2执行权限
[root@GEC6818 /test]#chmod 777 demo2

液晶屏单色显示

液晶屏参数

1.尺寸,显示区域对角线的长度:7inch
2.分辨率,液晶屏横向和纵向的像素点的个数:800*480
像素点,液晶屏是有一个个像素点组成的,每个像素点是液晶屏显示控制的最小单位,不同的像素点显示不同的颜色,组成图像。
3.色位,每个像素点由多少位的数据来描述。通过液晶屏都是24bits,其中Red占8bits,Green占8bits,Blue占8bits。
4.显存,存放液晶屏显示内容的内存区,显存一般和系统内存共用,在显存中,每个像素点使用了4个字节,其中3个字节是RGB各占一个字节;另外一个字节可以不用。这样800 * 480液晶屏显存的大小=800 * 480 * (3+1)=800 * 480 * 4=1536000B

代码展示

#include <sys/types.h>
#include <sys/stat.h> 
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

#define red 0x00FF0000
#define green 0x0000FF00
#define blue 0x000000FF
#define black 0x00000000
#define white 0x00FFFFFF

int main(void)
{
    int fd_lcd;
    int lcd_buf[800*480];
    int color[]={red,green,blue,black,white};
    int colo_count = sizeof(color) / sizeof(color[0]);
    fd_lcd = open("/dev/fb0",  O_RDWR);  //设备文件是:/dev/fb0 打开
    if(fd_lcd == -1 )
    {
        perror("open lcd "); 
        return -1;
    }
    printf("fd_lcd =%d\n", fd_lcd);
    while (1)
    {
        for (int j = 0; j < color_count; j++)
        {
            lseek(fd_lcd, 0, SEEK_SET);
            for (int i = 0; i < 800 * 480; i++)
            {
                lcd_buf[i] = color[j];
            }
            write(fd_lcd, lcd_buf, sizeof(lcd_buf));
            sleep(1);
        }
    }
    close(fd_lcd);
    return 0;
}
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值