mysql ecos_eCos调用用户程序方法(转)
HAL包中定义了各个平台启动信息,在某个processor family中选择一个,找到一个具体的variant,找到其ld文件(连接描述文件,eCos中使用binutils包中的连接工具)。ld文件中定义了首先连接哪个文件,并以哪个函数为入口。一般启动的汇编文件为vector.S,入口函数为_start,(AT使用reset_vector为入口)。
从vector.S的入口执行,到这段代码的最后会跳转到cyg_start函数,这便开始正式进入C语言编写的代码。
eCos中用户程序的入口函数有两个cyg_user_start()和main()。
eCos在infra包中startup.cxx定义了weak的cyg_user_start()函数,如果用户定义了cyg_user_start()会代替这个默认的函数进行执行。但是要注意的是cyg_user_start在eCos中的cyg_start()中被调用之后,才会调用Cyg_Scheduler::start(),这就是说如果要使用调度,那就不能让cyg_user_start处于一个死循环中。
第二个可以使用的入口函数名为main()函数,注意的是这个需要增加libc才能够使用。
既然cyg_start()调用了cyg_user_start(),那么当然的想法就是在libc中应当存在一个cyg_user_start(),并且这个cyg_user_start()中调用了main()函数,这样就可以使用main()函数作为入口了。从CStartUp.cxx中发现,实际这只是两种main函数启动的方法之一,在eCos中选CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT就是使用这种方法的main()函数,使用的时候需要和cyg_user_start一样的使用注意,不能死循环。
第二种是CYGSEM_LIBC_STARTUP_MAIN_THREAD定义的方法,建立一个main函数的线程。mainthread.cxx中定义全局Cyg_Thread cyg_libc_main_thread,建立了一个线程对象,而CStartUp.cxx中定义了函数cyg_iso_c_start()内部实现内容为让cyg_libc_main_thread运行,该函数作为cyg_libc_startup_dummy_constructor_class的构造函数的实现。接着定义了静态的cyg_libc_startup_dummy_constructor_class类对象,这个对象构造的时候会使cyg_libc_main_thread开始运行。在这当中,需要注意对cyg_libc_main_thread和cyg_libc_startup_dummy_constructor_class类对象的构造时机进行控制。
实际上cyg_start()也可以作为入口函数,因为该函数也是weak的,不过需要增加一些必需的函数比如调度器的打开等。AT就是使用cyg_start()作为入口。
mysql ecos_eCos调用用户程序方法(转)相关推荐
- ecmall mysql版本_ECMall的MySQL数据调用的简单方法
很多ecmall开发者会问,怎么使用Ecmall的mysql类库进行数据调用.从原理上来讲Ecmall的数据调用是以数据模块+模块类库的方式进行mysql数据调用的,所有数据模块都存储在include ...
- c efcore.mysql_EF Core在mysql中调用存储过程
EF Core在mysql中调用存储过程,博主找了很多,然而大多都是EF Core+SqlServer的或者EF Core+Oracle的,并没有正对Mysql的Pomelo驱动的,所以查找了一些资料 ...
- linux php mysql.so_在linux下php挂接mysql.so扩展的方法
总结的方向:在linux下php挂接mysql.so扩展的方法 问题背景:平常我们都是先安装mysql,然后才能去安装php.假如先安装php,后安装mysql,由于php需要连接mysql,因而在p ...
- jsp mysql中文乱码,jsp中文乱码 jsp mysql 乱码的解决方法
jsp中文乱码 jsp mysql 乱码的解决方法 jsp中文乱码 jsp mysql 乱码要servlet里面支持中文的方法: 在dopost或者doget的第一句加上: request.setCh ...
- mysql select time,MySql查询时间段的方法
本文实例讲述了MySql查询时间段的方法.分享给大家供大家参考.具体方法如下: MySql查询时间段的方法未必人人都会,下面为您介绍两种MySql查询时间段的方法,供大家参考. MySql的时间字段有 ...
- 在linux下php挂接mysql.so扩展的方法
总结的方向:在linux下php挂接mysql.so扩展的方法 问题背景:平常我们都是先安装mysql,然后才能去安装php.假如先安装php,后安装mysql,由于php需要连接mysql,因而在p ...
- mysql 表资源,MySQL 复制表的方法
1.mysqldump 执行过程: 一.将数据导出为 sql 文件. mysqldump -h$host -P$port -u$user --add-locks=0 --no-create-info ...
- phpfpm怎么连接mysql_配置nginx、mysql、php-fpm的方法
mac下使用homebrew安装安装.配置nginx.mysql.php-fpm的方法. 一.前话: 1.1.环境选择: 重新在mac上配置php,原本mac上就自带有apach.php以及pgsql ...
- ecmall 连接mysql服务器失败_ecmall ECMall的MySQL数据库调用
很多ecmall开发者会问,怎么使用Ecmall的mysql类库进行数据调用.从原理上来讲Ecmall的数据调用是以数据模块+模块类库的方式进行mysql数据调用的,所有数据模块都存储在\includ ...
最新文章
- 厦大计算机研究生和福大,考研:只知道厦门大学?福建还有这些211值得你了解...
- poj 3261 后缀数组 找反复出现k次的子串(子串能够重叠)
- CSS中的Position属性
- Android 2D Graphic Architecture
- Linux20180528 apache结合php 虚拟主机
- 服务器遭受***后的处理过程
- Linux安装GIMP
- java软件工程师是做什么的_JAVA软件工程师是做什么的?
- 基频和倍频的概念_基频峰,泛频峰,倍频峰,二倍频峰的区别
- Linux运维遇到的基本问题解决大全
- 全差分运放阻抗匹配计算(四)
- 北京社保卡和医疗存折(萌新看)
- 小程序+云开发---基础篇
- android wifi 共享网络,安卓手机怎么共享XP的网络 无线wifi共享教程【详解】
- mysql client 使用_mysqlclient怎么使用
- Vivo Y913拆解
- gps定位信息mysql_GPS定位数据库表设计
- 我的世界神奇宝贝服务器修改神兽刷新率,我的世界神奇宝贝1period;12怎么调神兽刷新率 | 手游网游页游攻略大全...
- 华为云06FusionAccess
- 【第十三届全国大学生数学竞赛非数学类】真就参加就有奖