一:assert断言:

断言是程序调试很重要的手段,ASSERT( f )在Debug模式下,每次运行到这里后会计算括号中的表达式,如果表达式为0,则中断执行,弹出一个警告框,用户可选择“继续”,“重试”,“忽略”在Release模式下,这句语句不会被编译进代码。ASSERT一般用于程序内部确认参数的正确性,即调用内部函数的时候,要由调用者保证参数的正确,而被调用函数内部,就可以通过ASSERT来检查参数是否满足要求。

1。C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:

#define assert(ignore) ((void)0)

2.assert() 源码包括assert.h和assert.c

assert.h的源码:

/* assert.h - ANSI standard assert functions header *//* Copyright 1992 Wind River Systems, Inc. *//*
modification history
--------------------
01e,13nov92,smb  fixed assert macro to not generate warnings
01d,22sep92,rrr  added support for c++
01c,20jul92,smb  added __assert extern.
01b,04jul92,jcf  cleaned up.
01a,03jul92,smb  written.
*/#ifdef __cplusplus
extern "C" {
#endif#include "types/vxANSI.h"#undef assert
#ifdef NDEBUG
#define assert(ignore)  ((void) 0)
#else /* turn debugging on */#define _ASSERT_STR(z) _ASSERT_TMP(z)
#define _ASSERT_TMP(z) #z#if defined(__STDC__) || defined(__cplusplus)
extern void __assert (const char *msg);
#else
extern void __assert ();
#endif#define assert(test) ((void) \((test) ? ((void) 0) : \__assert("Assertion failed: "#test", file "     \__FILE__ ", line "_ASSERT_STR(__LINE__)"\n")))
#endif  /* NDEBUG */#ifdef __cplusplus
}
#endif

assert.c的源码:

/* assert.c - ANSI standard assert function *//* Copyright 1992 Wind River Systems, Inc. *//*
modification history
--------------------
01c,24oct92,smb  removed some redundant documentation.
01b,20sep92,smb  documentation additions.
01a,20jul92,smb  written.
*//*
DESCRIPTIONINCLUDE FILES: stdio.h, stdlib.h, assert.hSEE ALSO: American National Standard X3.159-1989
NOMANUAL
*/#include "vxWorks.h"
#include "assert.h"
#include "stdio.h"
#include "stdlib.h"/******************************************************************************
*
* __assert - function called by the assert macro.
*
* INCLUDE: stdio.h assert.h
*
* RETURNS: never returns
* NOMANUAL
*/
void __assert(const char *msg   /* message string */){fdprintf(2, "%s\n", CHAR_FROM_CONST (msg)); /* print msg to error stream */abort();         }

主要的代码部分:

#define assert(test) ((void) \((test) ? ((void) 0) : \__assert("Assertion failed: "#test", file "    \__FILE__ ", line "_ASSERT_STR(__LINE__)"\n")))

二:树莓派执行.c文件:

使用putty远程连接树莓派,使用命令nano helloworld.c命令创建文件

代码部分:

#include <assert.h>
#include <stdio.h>int main()
{int a;char str[50];printf("请输入一个整数值: ");scanf("%d", &a);assert(a >= 10);printf("输入的整数是: %d\n", a);printf("请输入字符串: ");scanf("%s", str);assert(str != NULL);printf("输入的字符串是: %s\n", str);return(0);
}

使用gcc工具编译,运行
命令1:gcc helloworld.c
命令2:./a.out
输入值为1,断言处条件不满足,程序停止并显示相关信息。

​三:Ubuntu 下的远程操作 :

1.将分配的 IP 地址交给其他同学,让其他同学用 putty 或 xshell 连接

2.用 ftp 上传和下载文件:

在 Windows 下打开终端命令,输入 ftp

open 192.168.43.9
dir # 查看目录
put litte.txt
get litte.txt

注意:“open” 后跟自己的 ip 地址,“put” 和 “get” 后跟需要上传的文件名。

put发送文件:

get 接收文件 (默认接收路径为 C:\Users\自己的用户名)

3.Xming 图形窗口访问

安装 Xming ,打开 XLanuch,默认一直下一步,然后会在右下角出现一个Xming的图标:

配置 putty:

a 在配置选项 connection -> SSH -> Auth -> X11 forwarding 处,将 Enable X11 forwarding 打钩

b 然后 session->host name 处填写服务器IP 地址(即Ubuntu的IP地址),再点击 open 连接远程服务器

c 连接成功后,输入命令 set DISPLAY=xxx.xxx.xxx.xxx:0 ,(xxx.xxx.xxx.xxx是你所使用电脑windows下配置的IP地址)

四 树莓派下的远程操作:

1.用 vnc viewer 访问树莓派。

2.新建一个用户classmate2。

sudo adduser classmate2

3.Xming 图形窗口访问(具体操作如上所述,只需将服务器IP 地址修改为树莓派用户为 classmate2 的 IP 地址)

su classmate2 # 切换用户
ifconfig # 查看ip地址

用 putty 连接,打开 chromium 浏览器(输入命令 chromium-browser)

五.用scp 命令,练习在Ubuntu系统与树莓派系统间进行文件复制传输。

1.在Ubuntu下的home路径下创建一个example.txt文件。

2.在树莓派,输入命令 “sudo nano /etc/ssh/sshd_config”,然后去掉 "PermitRootLogin prohibit-password "之前的注释,保存并退出。

3. 重启后输入命令 “systemctl restart sshd”,如果会报(Failed to start sshd.service: Unit sshd.service not found.)错误,先添加输入命令 “systemctl enable ssh.service”,然后在重启。
使用命令scp /home/example.txt JingL@192.168.43.143:/home/JingL将 Ubuntu 中的文件拷贝到树莓派中。


4.用户名@ 后跟的 ip地址为自己树莓派的 ip
在putty下使用ls命令看到目录下多了一个exqmple.txt文件

5.查看复制过来的数据:

PC平台(x86)Linux系统 与 嵌入式(ARM)Linux系统的准备以及远程操作相关推荐

  1. 嵌入式基于Linux电机控制,基于嵌入式arm+linux平台的直流电机调速控制系统.pdf

    2012--2013 学年第 二 学期 物电 学院期末考试卷 嵌入式系统与应用 学号 : 姓名 : 班级 : 成绩: 评语: 装 订 (考试题目及要求) 嵌入式大作: 采用实验箱上的电位器作为信号输入 ...

  2. 嵌入式arm linux Java运行环境搭建和注意事项

    嵌入式arm linux Java运行环境搭建和注意事项 我的开发硬件环境 搭建步骤 1. 下载 ORacle 公司的ejdk-8u211-linux-arm-sflt.tar.gz(软件浮点版本,这 ...

  3. 嵌入式arm linux设置登录用户和用户密码

    最近在开发基于arm linux的集中器,出于保护系统的目的,需要给系统设置登录用户名和密码,因此就在网上查询了下怎样给嵌入式arm linux系统设置登录用户名和密码的方法,结果如下: 设置登录用户 ...

  4. 嵌入式arm linux产品,基于ARM——Linux的嵌入式产品平台构建

    摘要: 随着计算机技术的发展,嵌入式系统已成为计算机领域一个重要组成部分,并成为近年来新兴的研究热点.ARM7TDMI是一种高效,低功耗的RISC处理器,以该内核为核心的 LPC2210 是一款基于以 ...

  5. 搭建嵌入式ARM完整系统

    ## 系统构建概述 对于移植到开发板上运行的linux系统,我们需要构建三个最基本的东西: 引导程序bootloader: 开发板运行机制内核文件系统: 文件管理系统 如下图,我们以mini2440的 ...

  6. 给嵌入式ARM+Linux的初学者

    本文写给已经听过或接触过嵌入式并对此产生兴趣,可是对于嵌入式觉得无从下手的初学者. 0. 为什么要写这篇 我以前读研的时候选过一门嵌入式ARM的选修课,课程在实验室中进行,每个同学一个ARM开发板,老 ...

  7. arm linux 指纹识别,基于ARM—Linux指纹识别系统的设计.pdf

    基于ARM-Linux指纹识别系统的设计.pdf 第 20卷 第 l5期 电子设计工程 2012年 8月 Vo1.20 No.15 ElectronicDesienEn~inee Aug.2012 基 ...

  8. arm linux 2.6下载,ARM+LINUX(montavista2.6.x)环境下SIMCOM5218使用

    ARM+LINUX(montavista2.6.x)环境下 SIMCOM5218使用 http://blog.sina.com.cn/s/blog_4c796ed20100hpxg.html 一. 系 ...

  9. arm linux 进程调度,详解ARM Linux 2.4.x进程调度

    Linux2.4.x是一个基于非抢占式的多任务的分时操作系统,虽然在用户进程的调度上采用抢占式策略,但是而在内核还是采用了轮转的方法,如果有个内核态的线程恶性占有CPU不释放,那系统无法从中解脱出来, ...

最新文章

  1. #define list_entry(ptr, type, member) \   container_of(ptr, type, member)
  2. jbpm binding类深入解析
  3. 哨兵机器人钢力士_哨兵胳膊都被卸了?巴西厂X战警钢力士正式公布
  4. 范例ppt_消防安全知识主题班会PPT,全内容高质量课件,完整框架精美套用
  5. ads design environment_ADS应用技巧3 — 画一个巴伦有多少种方法?
  6. ERROR: Cannot uninstall ‘PyYAML‘. 安装 fvcore
  7. html ajax 菊花,Ajax加载菊花loding效果
  8. java 定义utilities_java – 无法运行程序“/Applications/Utilities/...
  9. 最新QQ邮箱滑块JS逆向教程
  10. 碌人乘凉-- AERCHI 你所不懂的
  11. 【Spring笔记】使用注解开发
  12. websocket连接相关的几个问题
  13. 数据新闻的四大发展特点
  14. 记阿里电话面试失败过程
  15. 武汉理工大学计算机学院宿舍,武汉理工大学专业所属校区及新生住宿分布情况(v2.0)...
  16. Linux虚拟机安装谷歌浏览器和驱动
  17. 会员积分系统应该设几个等级?
  18. 夏天计算机自动关机,电脑频繁自动关机,原因可能出在这
  19. 湘潭大学数据库考试(郭云飞)
  20. sucess==happiness

热门文章

  1. 【计算机科学】【2012】【含源码】边境巡逻车路径规划算法
  2. js 数组转json和json转数组
  3. 视频教程-C# For Unity系列之中级篇-Unity3D
  4. MaximizeBox 窗体最大化按钮
  5. 如何在一众95后中脱颖而出?
  6. Spring生命周期详解 + 应用实例
  7. java查询app下载量统计_java基础增强:统计网上app下载情况,并排序
  8. J10:JavaScript鼠标移入移出
  9. 这些iPhone 手机辅助功能你都了解吗(二)
  10. Python操作三大主流数据库