精华内容
下载资源
问答
  • 飞腾FT2000/4 CPU UEFI开发 固件配置

    千次阅读 2020-06-03 15:57:38
    我觉得这个CPU和FT1500A/4和FT2000AHK相比还算不错,我打算认真研究一下。FT1500A/4和FT2000AHK这两个CPU能用就行了,我说实话连手册都懒得看(包括软件的u-boot,麒麟OS,相关文档),怕恶心,FT2000新四核支持UEFI...

    作者

    QQ群:852283276
    微信:arm80x86
    微信公众号:青儿创客基地
    B站:主页 https://space.bilibili.com/208826118

    参考

    UEFI启动分析 UEFI设置启动项

    CPU结构指标

    • 集成 4 个 FTC663 核;
    • L2 Cache:每个 Cluster 内有 2MB,共 4MB;
    • L3 Cache:分为 8 个 Bank,共 4MB;
    • 集成 2 个 DDR4-3200 通道,支持对 DDR 存储数据进行实时加密;
    • 集成 34 Lanes PCIe 3.0 接口:2 个 X16(每个可拆分成 2 个 X8),2个 X1;
    • 集成 2 个千兆 Ethernet 接口(RGMII),支持 10/100/1000Mbps 自适应;
    • 集成 1 个 SD 卡控制器,兼容 SD 2.0 规范;
    • 集成 1 个 HDA (HD-Audio),支持音频输出,可同时支持最多 4 个Codec;
    • 集成 SM2/SM3/SM4/SM9 密码加速引擎;
    • 集成 4 个 UART,1 个 LPC Master,32 个 GPIO,4 个 I2C,1 个 QSPI,2 个通用 SPI,2 个 WDT,1 个 RTC,16 个外部中断(和 GPIO 共用IO);
    • 集成温度传感器;
    • 集成 128KB On Chip Memory;
    • 集成 ROM 作为片内可信启动根。

    参数配置

    UEFI里面自带了一个参数文件,根据文档,看下默认的参数配置情况,

    • CPU主频2600MHz
    • DDR频率0MHz,文档错了???
    • 使能4个核,CPU架构是2个Cluster,每个Cluster 2个Core,这个格式可推算出每个Cluster最多4个Core
    • PEU1为x8模式,PCIE0初始化为x16模式,
    • PCIE0控制器0/1/2,都初始化为RC模式,强制为GEN3,均衡值为0x48484848(根据结构指标,共6个PCIE)
    • PCIE1控制器0/1/2,都初始化为RC模式,强制为GEN3,均衡值为0x48484848(根据结构指标,共6个PCIE)
    • S3标志由外部电源管理模块( CPLD )通过GPIO0-PORTA1提供,详见硬件设计参考文档
    • 使能双通道内存,使能ECC(具体是不是ECC还得看内存条是否支持),DDR时序信息从内存条SPD读取

    使用飞腾打包工具的时候,dump生成的文件,多了很多0x0d 0x0a回车换行符,不知道什么意思,略过。

    引脚复用

    展开全文
  • 代表信息新时代的Go语言诞生了,它所具有的高并发性非常适合服务器编程,而其天生的跨平台优势,降低了分布式异构计算平台的开发难度,最终让程序变得简洁、干净、高效。对Go语言在国产平台上的移植进行探索,实测Go...
  • SuperMap iObjects for C++ 提供了Window 、Linux(x86) 以及 Linux_Arm(银河麒麟系统+龙芯CPU/飞腾CPU)的产品包 ,从而支持跨平台使用。本文主要介绍如何使用SuperMap iObjects for C++ 组件产品进行二次开发。主要...

            SuperMap iObjects for C++ 提供了Window 、Linux(x86)  以及 Linux_Arm(银河麒麟系统+龙芯CPU/飞腾CPU)的产品包 ,从而支持跨平台使用。 本文主要介绍如何使用SuperMap iObjects for C++ 组件产品进行二次开发。主要包含以下几个方面的内容:

    • 产品包介绍
    • 开发工具说明
    • 示例程序使用
    • VS开发示例
    • Qt开发示例

    1. 产品包介绍

        SuperMap iObjects for C++ 产品包包含下图中的内容:

    •  bin : 动态库目录,包含产品运行所需的动态库,该目录中提供了32位和64位的动态库,同时还都分别提供release和debug两个版本。如: /bin/bin是32位realease的库目录,而/bin/bind是32位debug的库目录
    • lib : 链接库目录,与bin目录一样,也分别提供了32位和64位的release和debug版本的链接库
    • include , include/private: 头文件目录,其中根据不同模块分别创建了目录;注意有些模块放在include/private目录中,注意将include/private也添加到项目的头文件目录设置中
    • license :本产品的使用许可声明,以及产品中用到的开源库的授权文件
    • sample :  示例程序,其中的 extensions4Qt 是基于Qt对SuperMap C++ 组件封装的了QMapControl等基本功能的库工程,gettingStarted 和 planeShow 是依赖于extensions4Qt的Qt应用示例,用于展示地图操作
    • help : 提供了产品入门文档和api文档
    • support :  提供了一些字体库和许可驱动包

       以上最常用到的是 include bin 和  lib,它们提供了C++开发的必要内容。

    2. 开发工具说明

        SuperMap iObjects for C++ 的二次开发主要使用VS或Qt进行开发,适用的开发软件版本如下:

        Windows: 

               1) VS 2012 及以上版本,如 VS 2012, VS 2017

               2) Qt 5.3 及以上版本,如 Qt 5.2, Qt 5.6, Qt 5.9, Qt 5.12

               3) VS+Qt开发,在VS上安装合适版本的插件即可

        Linux:

               1) Qt 4.8.6 的编译器,通常需要使用源码编译

               2) Qt Creator4.4, 可根据情况安装,配置好Qt 4.8.6的编译器即可

    3. 示例程序使用

           示例程序提供的是 Qt 工程,因此需要使用Qt。当然也可以在VS中安装插件,在VS中打开Qt工程,只不过需要重新对工程配置头文件,链接库等。此处简单说明一下,如何在Qt中运行示例工程,更详细的工程配置,请看后面的“Qt 开发示例”。以运行gettingStarted 为例。

       1. 在 Qt 中依次打开 extensions4Qt 和 gettingStarted

       2. 将需要使用的bin目录添加到构建环境PATH中,如下图所示,添加了 bin\bind_x64所在的目录

          

      3. 编译extensions4Qt,运行 gettingStarted即可

    4. VS 开发示例

         1. 创建一个MFC工程: FirstSuperMap

             此处我们创建一个基于对话框的MFC应用,,如下图所示

             

             

         然后,从“资源视图”打开窗口布局,删除 文本和按钮控件,结果如下图所示:

            

         项目创建好后,接下来进行项目配置,此处以debug x64的为例。

         2. 配置运行库

            打开项目属性页,找到“配置属性 -> 调试 -> 环境”,将运行库(bin/bind_x64)的路径添加到项目运行环境中,如图:

             

            

            若不在工程上配置,也可在系统环境变量中配置,注意将其添加到PATH的最前面,并重启VS.

         3. 配置头文件目录

             在“ C/C++ -> 常规  -> 附加包含目录 中, 添加头文件目录(include 和 include/private),如图:

             

         4. 增加预编译宏(_UGUNICODE),

             在“C/C++  ->  预编译器” 中,增加预编译宏 _UGUNICODE, 如图:

             

         5. 启用宽字符

             在“C/C++ -> 语言 -> 将 Wchar 视为内置类型”,设置为“”,以启用宽字符,如图:

             

         6. x64 版本编译时“字节数超过对象格式限制: 请使用 /bigobj 进行编译”,设置如下:

             

         7. 配置连接库目录

             在链接器配置中,添加链接库目录(lib/libd_x64), 如图:

             

         8. 配置所需要的库文件名称

             在链接器配置中,添加所需的链接库库文件名称,如下:

    SuBased.lib
    SuElementd.lib
    SuDrawingd.lib
    SuEngined.lib
    SuFileParserd.lib
    SuGeometryd.lib
    SuGraphicsd.lib
    SuMapd.lib
    SuMapEditord.lib
    SuOGDCd.lib
    SuToolkitd.lib
    SuWorkspaced.lib
    SuBase3Dd.lib
    SuSpatialIndexd.lib
    SuChartBased.lib

              配置如图:

             

        9. 实现地图窗口

             首先,创建一个 MapControl 类,用于实现对地图窗口的基本封装,也方便重复使用,并且使得 MapControl 同时支持 VS MFC 框架和 Qt 框架的窗口。

             (1) 在 MapControl.h 文件,如下所示:

    #ifndef MAPCONTROL_H
    #define MAPCONTROL_H
    
    #include "MapEditor/UGMapEditorWnd.h"
    #include "Graphics/UGGraphicsManager.h"
    #include "Drawing/UGDrawParamaters.h"
    #include "Geometry/UGGeoPoint.h"
    
    using namespace UGC;
    
    // For Callback
    #if defined WIN32 || defined _WINDOWS
    #define SuCALLBACK __stdcall
    #else
    #define SuCALLBACK
    #endif
    
    class  MapControl
    {
    	//Constructor
    public:
    	/*
    	 *@en
    	 *@pInvalidateCallBack  A callback function pointer through which to invalidate the Window if map content is updated
    	 *@pWnd  the Window which owns the invalidate callback function
    	*/
    	MapControl(INVALIDATEPROC pInvalidateCallBack, void* pWnd);
    	virtual ~MapControl();
    
    ...
    
    };
    

             (2) 在 MapControl.cpp 文件,如下所示:

    #include "stdafx.h"
    #include "MapControl.h"
    
    
    /************** 地图窗口相关 ****************/
    /**************** Invalidate CallBack used in MapControl *********************/
    void SuCALLBACK InvalidateCallbackMapControl(void * p)
    {
    	MapControl* pThis = (MapControl*)p;
    
    	pThis->Invalidate();
    
    }
    
    MapControl::MapControl(INVALIDATEPROC pInvalidateCallBack, void* pView)
    {
    	m_pUGMapWnd = NULL;
    	m_pGraphicsImage = NULL;
    	m_pGraphicsImageOld = NULL;
    	m_pInvalidateCallback = NULL;
    
    	m_IsMinSized = false;
    
    	m_pWnd = pView;
    	m_pInvalidateCallback = pInvalidateCallBack;
    	//Initialize(pInvalidateCallBack, pView);
    	Initialize(InvalidateCallbackMapControl, this);
    
    	/*UGWorkspace* pWorkspace = m_pUGMapWnd->m_mapWnd.m_Map.GetWorkspace();
    	if(pWorkspace == NULL){
    		pWorkspace = new UGWorkspace();
    		m_pUGMapWnd->m_mapWnd.m_Map.SetWorkspace(pWorkspace);
    	}*/
    
    	m_pInnerWorkspace = new UGWorkspace();
    	m_pWorkspace = NULL;
    	SetWorkspace(m_pInnerWorkspace);
    
    	mNeedRedraw = false;
    
    	mIsInWorkspace = false;
    
    }
    ...

            (3) 在 FirstSuperMapDlg.h 文件中,引入 MapControl.h,并声明一个 MapControl 指针  , 如所示:

    // FirstSuperMapDlg.h
    
    private:
    	MapControl* m_pMapControl;

            (4) 在 FirstSuperMapDlg.cpp 文件定义一个全局的地图刷新回调函数,如下所示:     

    // 地图刷新回调
    void SuCALLBACK InvalidateCallBack(void* pWnd)
    {
    
    	// send message to view  for invalidating itself
    
    	FirstSuperMapDlg *pView = (FirstSuperMapDlg *)pWnd;
    	if (pView->m_hWnd != NULL && pView->IsWindowVisible())
    		pView->Invalidate(false); // not redraw background
    }

             (4) 在 FirstSuperMapDlg 的构造函数初始化 m_pMapControl,并且先检查了组件许可的检查是否有效,如下所示:

    // FirstSuperMapDlg.cpp
    
    FirstSuperMapDlg::FirstSuperMapDlg(CWnd* pParent /*=nullptr*/)
    	: CDialogEx(IDD_FIRSTSUPERMAP_DIALOG, pParent)
    {
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    
    	bool isValid = UGLicense::VerifyLicense(UGLicense_iObjectsCppCore);
    	if (isValid) {
    		m_pMapControl = new MapControl(InvalidateCallBack, this);
    	}
    	else {
    		m_pMapControl == NULL;
    	}
    	assert(m_pMapControl != NULL);
    }
    

              (5) 修改 FirstSuperMapDlg::OnPaint() 函数,从而将地图绘制到窗口上,如图所示:

    // FirstSuperMapDlg.cpp
    
    void FirstSuperMapDlg::OnPaint()
    {
    	CPaintDC dc(this); // device context for painting
    	CRect rect;
    	GetClientRect(&rect);
    	m_pMapControl->OnDraw(rect.left, rect.top, rect.right, rect.bottom, dc.m_hDC);
    
    	CDialogEx::OnPaint();
    }

               (6) 在 FirstSuperMapDlg.h 的 FirstSuperMapDlg 类声明需要的鼠标事件函数,如下所示:

    // FirstSuperMapDlg.h
    
    public:
    	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    	afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
    	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
    	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
    	afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
    	afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
    	afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
    	afx_msg void OnSize(UINT nType, int cx, int cy);

               (7) 在 FirstSuperMapDlg.cpp 的 BEGIN_MESSAGE_MAP 增加上述事件命令,并实现对应函数,如下所示:

    
    BEGIN_MESSAGE_MAP(FirstSuperMapDlg, CDialogEx)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	ON_WM_MOUSEMOVE()
    	ON_WM_MOUSEWHEEL()
    	ON_WM_LBUTTONDOWN()
    	ON_WM_LBUTTONUP()
    	ON_WM_LBUTTONDBLCLK()
    	ON_WM_RBUTTONDOWN()
    	ON_WM_RBUTTONUP()
    	ON_WM_RBUTTONDBLCLK()
    	ON_WM_SIZE()
    END_MESSAGE_MAP()
    // FirstSuperMapDlg.cpp
    
    void FirstSuperMapDlg::OnMouseMove(UINT nFlags, CPoint point)
    {
    	// TODO: Add your message handler code here and/or call default
    	//CPaintDC dc(this); 
    
    	m_pMapControl->OnMouseMove(nFlags, point.x, point.y, ::GetDC(this->m_hWnd));
    	CDialogEx::OnMouseMove(nFlags, point);
    }
    
    
    ...
    

        10. 增加打开工作空间和地图的代码

             在地图窗口初始化成功后,打开工作空间,并打开地图, 如下:

    // FirstSuperMapDlg.cpp
    
    FirstSuperMapDlg::FirstSuperMapDlg(CWnd* pParent /*=nullptr*/)
    	: CDialogEx(IDD_FIRSTSUPERMAP_DIALOG, pParent)
    {
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    
    	bool isValid = UGLicense::VerifyLicense(UGLicense_iObjectsCppCore);
    	if (isValid) {
    		m_pMapControl = new MapControl(InvalidateCallBack, this);
    
    		// Open workspace file
    		UGString wkPath = _U("E:\\SuperMap\\iObject_CPP\\1000\\sample\\data\\China400_E-map.smwu");
    
    		UGWorkspaceConnection wkCon;
    
    		wkCon.m_strServer = wkPath;
    		wkCon.m_nWorkspaceType = UGWorkspace::WS_Version_SMWU;
    
    		UGWorkspace* pWorkspace = m_pMapControl->GetWorkspace();
    		if (pWorkspace->Open(wkCon))
    		{
    			if (pWorkspace->m_MapStorages.GetCount() > 0)
    			{
    				UGString mapName = pWorkspace->m_MapStorages.GetNameAt(0);
    				UGbool isOpen = m_pMapControl->GetMapEditWnd()->m_mapWnd.m_Map.Open(mapName);
    				m_pMapControl->Refresh();
    
    			}
    		}
    	}
    	else {
    		m_pMapControl == NULL;
    	}
    	assert(m_pMapControl != NULL);
    }

        11. 运行该工程, 如下图所示:

           

    5. Qt 开发示例

         1. 创建Qt项目FirstSuperMap

         2. 项目设置中,增加环境变量,如 OBJECTSDIR , 用于指定SuperMap iObjects for C++ 所在目录,方便以后修改;如图:

         3. 将运行库(bin/bind_x64)的目录添加到PATH中,如图:

         4. 在.pro文件中,配置 预编译宏、宽字符、头文件和链接库等

            Windows 和 Linux 上配置略有不同,在此提供两种系统的配置,以便迁移到Linux系统, 增加的配置如下:

    DEFINES += _UGUNICODE
    
    # Include Path
    OBJECTSDIR = "$$(OBJECTSDIR)"
    #message($${OBJECTSDIR})
    
    INCLUDEPATH +=$${OBJECTSDIR}/include\
        $${OBJECTSDIR}/include/private\
        ../../../Include
    
    # x64 /bigobj
    QMAKE_CXXFLAGS += /bigobj
    
    win32{
        # wchar_t
        QMAKE_CXXFLAGS += -Zc:wchar_t
    
        # x64
        CONFIG(debug, debug|release){
    
        LIBPATH = $${OBJECTSDIR}/lib/libd_x64
        LIBS +=  -lSuBased            \
                 -lSuElementd         \
                 -lSuDrawingd         \
                 -lSuEngined          \
                 -lSuFileParserd      \
                 -lSuGeometryd        \
                 -lSuGraphicsd        \
                 -lSuMapd             \
                 -lSuMapEditord       \
                 -lSuOGDCd            \
                 -lSuToolkitd         \
                 -lSuWorkspaced       \
                 -lSuBase3Dd          \
                 -lSuSpatialIndexd    \
                 -lSuChartBased       \
    
        }else:CONFIG(release, debug|release){
    
        LIBPATH = $${OBJECTSDIR}/lib/lib_x64
        LIBS +=  -lSuBase            \
                 -lSuElement         \
                 -lSuDrawing         \
                 -lSuEngine          \
                 -lSuFileParser      \
                 -lSuGeometry        \
                 -lSuGraphics        \
                 -lSuMap             \
                 -lSuMapEditor       \
                 -lSuOGDC            \
                 -lSuToolkit         \
                 -lSuWorkspace       \
                 -lSuBase3D          \
                 -lSuSpatialIndex    \
                 -lSuChartBase       \
        }
    }
    unix:{
        # 16bit wchar
        QMAKE_CXXFLAGS =-fshort-wchar
        # 支持C++11
        QMAKE_CXXFLAGS += -std=c++11
        # 对std库使用旧ABI, 也可在头文件开始处使用#define _GLIBCXX_USE_CXX11_ABI 0, 如此只对该文件起作用;但独立的库更好管理;
        # 新ABI在库中的链接名称如_cxx11::std::string, 旧ABI在库中名称如std::string
        # GCC 默认值为1,使用新ABI;
        DEFINES += _GLIBCXX_USE_CXX11_ABI=0
    
        LIBS += -L$${OBJECTSDIR}/bin/bin \
      -lSuBase            \
                 -lSuElement         \
                 -lSuDrawing         \
                 -lSuEngine          \
                 -lSuFileParser      \
                 -lSuGeometry        \
                 -lSuGraphics        \
                 -lSuMap             \
                 -lSuMapEditor       \
                 -lSuOGDC            \
                 -lSuToolkit         \
                 -lSuWorkspace       \
                 -lSuBase3D          \
                 -lSuSpatialIndex    \
                 -lSuChartBase       \
    }

         5. 实现地图窗口

             Qt中地图窗口的实现与VS中的类似,MapControl是一个完整的类,因此将其拷贝过来即可。注意,删除 MapContro.cpp 的第一行(#include "stdafx.h"),该行在Qt中不需要。

            (1) 在 .pro 文件增加 MapControl的源文件和头文件,以便Qt项目可使用,如下所示:

    SOURCES += \
            main.cpp \
            MainWindow.cpp \
            MapControl.cpp
    
    HEADERS += \
            MainWindow.h \
            MapControl.h
    

            (2) 在 MainWindow.h 文件添加 MapControl 的头文件(#include "MapControl.h"), 定义MapControl指针,如下所示:

    private:
        MapControl* m_pMapControl;

            (3) 在 MainWindow.cpp 文件定义一个全局的地图刷新回调函数,如下所示:

    /**************** Map Refresh CallBack *********************/
    void SuCALLBACK InvalidateCallback(void * pWnd)
    {
        MainWindow* pThis = (MainWindow*)pWnd;
    
        if(pThis != NULL)
            pThis->update();
    }

            (4) 在 MainWindow 的构造函数中,初始化 m_pMapControl,并且先检查了组件许可的检查是否有效,如下所示:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        bool isValid = UGLicense::VerifyLicense(UGLicense_iObjectsCppCore);;
        if(isValid)
        {
            m_pMapControl = new MapControl(InvalidateCallback, this);
        }else
        {
            m_pMapControl = NULL;
            qDebug("许可无效,请配置SuperMap组件许可.");
        }
        assert(m_pMapControl != NULL);
    
    }

            (5)  在 MainWindow.h 声明绘制函数和鼠标事件函数,如下所示:

    
    private:
        unsigned int getMouseOrKeyFlag(QMouseEvent* event);
    
    protected:
        virtual void paintEvent(QPaintEvent* event);
        virtual void wheelEvent(QWheelEvent* event);
        virtual void mousePressEvent(QMouseEvent* event);
        virtual void mouseReleaseEvent(QMouseEvent* event);
        virtual void mouseMoveEvent(QMouseEvent* event);
        virtual void resizeEvent(QResizeEvent* event);
        virtual void keyPressEvent(QKeyEvent* event);
        virtual void mouseDoubleClickEvent(QMouseEvent *event);

           (6) 在 MainWindow.cpp 中实现上述函数,如下所示:

    /*********** Override event functions ************/
    void MainWindow::paintEvent(QPaintEvent* event)
    {
        if(m_pMapControl == NULL){
            return;
        }
        m_pMapControl->OnDraw(0, 0, this->width(), this->height());
        uchar* imgData = m_pMapControl->GetImageBytes();
        if (imgData != NULL){
            QImage* pQImage = new QImage(imgData, this->width(), this->height(), QImage::Format_ARGB32);
    
            QColor background(255, 255, 255);
            QPainter painter;
            painter.begin(this);
            painter.fillRect(0, 0, this->width(), this->height(), background);
            painter.drawImage(QRectF(0, 0, this->width(), this->height()), *pQImage);
    
            // paint signal / slot
            painter.end();
            delete pQImage;
        }
        else {
            // no map data
        }
    }
    unsigned int MainWindow::getMouseOrKeyFlag(QMouseEvent* event)
    {
        unsigned int flag = 0;
        if (event->modifiers() & Qt::ShiftModifier){
            flag = flag | UG_MK_SHIFT;
        }
        if ((event->modifiers() & Qt::ControlModifier)){
            flag = flag | UG_MK_CONTROL;
        }
        return flag;
    }
    void MainWindow::wheelEvent(QWheelEvent* event)
    {
        if(m_pMapControl != NULL){
            m_pMapControl->OnMouseWheel(0, event->delta(), event->x(), event->y());
        }
    }
    
    ...

          (7) 添加打开工作空间和地图的代码,如下所示:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        bool isValid = UGLicense::VerifyLicense(UGLicense_iObjectsCppCore);
        if(isValid)
        {
            m_pMapControl = new MapControl(InvalidateCallback, this);
            // Open workspace file
            UGString wkPath = _U("E:\\SuperMap\\iObject_CPP\\1000\\sample\\data\\China400_E-map.smwu");
    
            UGWorkspaceConnection wkCon;
    
            wkCon.m_strServer = wkPath;
            wkCon.m_nWorkspaceType = UGWorkspace::WS_Version_SMWU;
    
            UGWorkspace* pWorkspace = m_pMapControl->GetWorkspace();
            if (pWorkspace->Open(wkCon))
            {
                 if (pWorkspace->m_MapStorages.GetCount() > 0)
                 {
                      UGString mapName = pWorkspace->m_MapStorages.GetNameAt(0);
                      UGbool isOpen = m_pMapControl->GetMapEditWnd()->m_mapWnd.m_Map.Open(mapName);
                      m_pMapControl->Refresh();
    
                 }
            }
        }else
        {
            m_pMapControl = NULL;
            qDebug("许可无效,请配置SuperMap组件许可.");
        }
        assert(m_pMapControl != NULL);
    }
    

         6. 运行该工程, 如下图所示:

           

          9. 在VS中使用Qt开发

              在VS中使用Qt开发,需要指定Qt模块 Core, GUI, Widgets, 其他工程配置和前面的MFC项目配置方式一样;若是打开已有的Qt项目,还需配置Qt的版本和需要的模块。右键项目,选择 Qt -> “Qt 设置选项”打开如下也页面进行配置。

     

          至此,关于 SuperMap iObjects for C++  的入门开发就介绍完了。示例数据是产品包中带有的,此处就不单独提供了,当然,也可以使用自己的数。示例程序请通过页面上方的资源下载。

    更多功能,请参考GitHub项目https://github.com/Jun0x01/JunSuCpp

    展开全文
  • 本章以银河麒麟操作系统和飞腾CPU为主进行测试,同样的测试也适用中标麒麟操作系统和龙芯CPU,以及深度操作系统和申威CPU;KY-RTI支持x86、飞腾、龙芯、申威等机器的互联互通,实现各类程序的集成。 ...

    第九章 综合演示

           KY-RTI支持基于不同CPU、不同操作系统、不同程序设计语言、不同HLA服务调用方式开发的仿真成员之间的互操作,本章综合前面章节的内容给出了几个联合测试案例。本章以银河麒麟操作系统和飞腾CPU为主进行测试,同样的测试也适用中标麒麟操作系统和龙芯CPU,以及深度操作系统和申威CPUKY-RTI支持x86、飞腾、龙芯、申威等机器的互联互通,实现各类程序的集成。

    9.1演示1:C++/Qt/Java联合测试

           该演示环境为一台安装银河麒麟操作系统(http://www.ubuntukylin.com)的机器,采用GNU C++、Qt、Java的时间管理程序进行联合测试,如图9.1所示。

           操作步骤:

           第1步:启动KY-RTI服务器,如图9.2所示。

           第2步:启动GNU C++的time-tick时间管理程序,如图9.3所示。

           第3步:启动Java的time时间管理程序,如图9.4所示。

           第4步:启动Qt的QtTimemanagement图形化的时间管理程序,如图9.5所示。

           测试结果表明:KY-RTI支持C++/Qt/Java各种程序设计语言开发的仿真成员的联合仿真。

                                           图9.1 银河麒麟操作系统上的C++/Qt/Java联合测试

     

                                           图9.2 KY-RTI服务器

     

                                           图9.3 基于GNU C++开发的time-tick程序

     

                                           图9.4 基于Java开发的time程序

     

                                                                图9.5 基于Qt开发的time程序

    9.2演示2:Visual C++/Visual C#联合测试

           该演示环境为一台Windows机器,采用Visual C++ 2010的ping-tick程序与Visual C# 2010的pong-notick程序进行联合测试。因为ping-pong程序只需要两个仿真成员,如果采用时间管理示例,实际上可以实现Visual C++、Visual C#、Java三类程序的互操作,参见演示3。另外,仿真成员不区分32位和64位。

           操作步骤:

           第1步:启动KY-RTI服务器;

           第2步:打开RTI.rid的tick开关,运行Visual C++ 2010的ping-tick程序;

           第3步:运行Visual C# 2010的pong-notick程序。

           运行结果如图9.6、图9.7、图9.8所示。

           测试结果表明:KY-RTI支持Visual C++Visual C#两类程序设计语言开发的仿真成员的联合仿真。

                                           图9.6 KY-RTI服务器

     

                                           图9.7 基于Visual C++ 2010开发的ping-tick程序

     

                                           图9.8 基于Visual C# 2010开发的pong-notick程序

    9.3演示3:软硬件异构平台联合测试

           该演示测试KY-RTI对于异构CPU、异构操作系统、异构程序设计语言、异构HLA服务调用方式等软硬件环境下的互操作功能。测试环境如表9.1所示。

                                                             表9.1 测试环境

    系统环境

    计算机1

    计算机2

    操作系统

    Windows 7

    银河麒麟操作系统SP2

    CPU类型

    Intel Core i5-6200U 2.30GHz,4核

    飞腾FT2000a,4核

    程序设计语言

    VC++、VC#、Java、Qt

    GNU C++、Java、Qt

     

           测试采用两台计算机,计算机1为x86、Windows 7,计算机2为飞腾cpu、银河麒麟操作系统,如图9.9所示。整个仿真启动1个KY-RTI和7个仿真成员。测试采用本文中的时间管理示例。

           计算机1:启动KY-RTI并部署4个仿真成员VC++、VC#、QtCreator(x86_Win7)、Java(x86_Win7);

           计算机2:部署3个仿真成员g++、QtCreator(ft_Linux)、Java(ft_Linux)。

           测试结果表明:KY-RTI的互操作性很好,具有很强的软硬件跨平台能力。

                                           图9.9 基于KY-RTI的软硬件测试环境示意图

                                                          表9.2 仿真成员

    仿真成员名称

    程序设计语言

    tick调用方式

    所在计算机

    VC++

    VC++ 2010

    Y

    Win7

    VC#

    VC# 2010

    N

    Win7

    QtCreator(x86_Win7)

    Qt5.5.0

    N

    Win7

    Java(x86_Win7)

    JDK1.8.0_162

    N

    Win7

    g++

    GNU C++

    Y

    Kylin

    QtCreator(ft_Linux)

    Qt5.6.1

    N

    Kylin

    Java(ft_Linux)

    OpenJDK8

    N

    Kylin

           下图是Windows 7计算机的仿真状态图,包括KY-RTI和4个仿真成员。

                                           图9.10 Windows 7仿真系统

           下图是银河麒麟计算机的仿真状态图,包括3个仿真成员。

                                           图9.11 银河麒麟仿真系统

    麒麟RTI软件KY-RTI的Linux、Windows版本和源码请联系作者:walt_lbq@163.com

     

    麒麟KY-RTI分布仿真技术:前 言

    麒麟KY-RTI分布仿真技术:第一章 简介

    麒麟KY-RTI分布仿真技术:第二章 系统安装

    麒麟KY-RTI分布仿真技术:第三章 KY-OMT对象模型模板工具

    麒麟KY-RTI分布仿真技术:第四章 C++程序设计

    麒麟KY-RTI分布仿真技术:第五章 Qt程序设计

    麒麟KY-RTI分布仿真技术:第六章 Java程序设计

    麒麟KY-RTI分布仿真技术:第七章 Visual C++程序设计

    麒麟KY-RTI分布仿真技术:第八章 Visual C#程序设计

    麒麟KY-RTI分布仿真技术:第九章 综合演示

    麒麟KY-RTI分布仿真技术:附录1 分组聊天(HLA数据分发管理的应用

    麒麟KY-RTI分布仿真技术:附录2 大联邦(构建1000个成员的HLA/RTI仿真系统)

    麒麟KY-RTI分布仿真技术:附录3 国产化(操作系统+CPUs)

    展开全文
  • 绿盟数据库审计-信创型号基于新平台架构(飞腾CPU、银河麒麟操作系统)开发,通过对信创型号的能力优化和性能提升,在确保数据库安全审计功能完整性的同时,也保证了在实际环境部署后的实用性和易用性。性能方面绿盟...

    93cbdfb690b2641925c39e3a976e45f9.png

    相关阅读:全新版本发布|绿盟数据库审计与防护(DAS)

    继绿盟数据库审计与防护(DAS)新版本发布后,绿盟数据库审计-信创型号也于近日发布上市。绿盟数据库审计-信创型号基于新平台架构(飞腾CPU、银河麒麟操作系统)开发,通过对信创型号的能力优化和性能提升,在确保数据库安全审计功能完整性的同时,也保证了在实际环境部署后的实用性和易用性。

    性能方面

    绿盟数据库审计-信创型号,采用大数据计算和存储架构以及数据热交换技术,可提高实时数据处理效率,同时数据检索范围更广,可实现全库检索保证审计查询效率。目前信创型号的SQL语句处理、语句入库以及DB网络吞吐性能与绿盟科技在售中高端型号性能持平。

    0e334a2ea5349fcd42272f1486cacbad.png

    数据库类型

    支持方面

    绿盟数据库审计-信创型号,针对国内主流数据库厂商均已支持,同时还支持国际通用数据库以及大数据环境。

    b79e4d9fef758d40b535b8fa439d7c07.png

    能力方面

    具备数据库自动发现能力

    通过对DB网络流量的采集和数据解析,利用各DB类型的协议特征,实现对不同类型数据库的自动识别。

    具备访问DB行为记录能力

    通过对通讯协议、Lex/yacc词法、语法解析,实时、准确记录访问DB行为。

    具备安全风险告警能力

    五种实时DB安全风险告警能力,包含:漏洞攻击、SQL注入、黑名单语句、危险客户端登录以及危险访问行为告警。

    具备DB访问日志线索分析能力

    在海量日志中,从访问来源、会话结果、SQL语句、执行性能四个不同分析维度入手,细化审计条件,定位所需的日志信息。

    具备应用用户关联审计能力

    可对前端应用访问和后端数据库操作请求,进行多层业务关联审计实现访问者信息的完全追溯。

    具备敏感审计数据脱敏能力

    支持SQL返回结果集的关键信息脱敏,支持关键字、正则表达式、列名扫描方式脱敏,且内置多种脱敏模板。

    部署方面

    绿盟数据库审计-信创型号,支持多种部署方式,兼容多种网络环境,包括:

    1.镜像旁路部署;

    2.数据库端AGENT引流部署;

    3.WEB端AGENT引流部署;

    4.集中化管理分布式部署;

    绿盟数据库审计-信创型号,沿袭产品的全部功能特点和产品优势,在满足网络安全建设合规要求的同时,提高了DB安全监管能力,加快了DB安全事件响应速度,有效地解决了安全事件定位问题。

    c3814a1de40b1e572b1e00bee670ab34.png

    绿盟数据安全产品系列

    抵御泄露风险,捍卫数据安全

    eb9a5a974516772c1c60de0a385f1d04.pngc6a1039b53eab437313ac42db56c6524.pngc67cb8dcbfdd0bee7edb168ac618046f.png

    b97b6a0f7735e5d6b66a628c10e6ef31.png

    f1694667730b45bb2b93265a7fef8680.png

    展开全文
  • 绿盟数据库审计-信创型号基于新平台架构(飞腾CPU、银河麒麟操作系统)开发,通过对信创型号的能力优化和性能提升,在确保数据库安全审计功能完整性的同时,也保证了在实际环境部署后的实用性和易用性。性能方面绿盟...
  • 银河麒麟操作系统

    万次阅读 多人点赞 2018-06-16 22:18:56
    银河麒麟操作系统支持以x86、PowerPC、SPARC等为代表的国际主流CPU和以飞腾、龙芯、兆芯、鲲鹏等为代表的国产CPU,并已经广泛应用于国防、军工、政务、电力、航天、金融、电信、教育、大中型企业等行业或领域。
  • 银河麒麟操作系统与优麒麟操作系统一样,是由天津麒麟信息技术有限公司开发和维护的两款操作系统,银河麒麟操作系统支持以x86、x86_64、PowerPC、SPARC为代表的国际主流CPU和以飞腾为代表的国产CPU,并已经广泛应用...
  • 银河麒麟操作系统支持以x86、x86_64、PowerPC、SPARC为代表的国际主流CPU和以飞腾为代表的国产CPU,并已经广泛应用于国防、军工、政务、电力、航天、金融、电信、教育、大中型企业等行业或领域。银河麒麟操作系统...
  • 银河麒麟操作系统支持以x86、x86_64、PowerPC、SPARC为代表的国际主流CPU和以飞腾为代表的国产CPU,并已经广泛应用于国防、军工、政务、电力、航天、金融、电信、教育、大中型企业等行业或领域。银河麒麟操作系统...
  • 国产中标麒麟桌面操作系统针对X86及龙芯、申威、众志、飞腾等国产CPU平台进行自主开发,率先实现了对X86及国 产CPU平台的支持,提供高性能的操作系统产品,是民用、军用“核高基”项目桌面操作系统项目的重要研究...
  • 开发的统一操作系统UOS已在官方公开开放...据官网介绍,统一桌面版操作系统是统信软件发行的美观易用、安全稳定的国产操作系统,该系统可支持x86、龙芯、申威、鲲鹏、飞腾、兆芯等国产CPU平台,能够满足不同用户的...
  • 系统平台:中标麒麟(CPU飞腾)6 版本:4.3.2 症状 问题原因 问题原因: 客户的程序使用MySQL开发,bytea基于postgresql类数据库专有数据类型 ,需要特殊处理 解决方案 解决方案: 修改mybatis配置文件...
  • 1 简介 金蝶 Apusic 应用服务器(AAS)是由金蝶天燕开发的应用系统运行平台,为应用系统提供便捷开发、灵活部署、可靠运行、高效管理及快速集成等关键支撑...CPU 飞腾FT2000+ 操作系统:Kylin Linux Advanced Serve..
  • 支持国产自主CPU品牌:龙芯、申威、鲲鹏、麒麟、飞腾、海光、兆芯。丰富的外设支持兼容主流厂商的打印机、扫描仪、摄像头、高拍仪、读卡器、Raid卡、HBA卡、生物识别设备等外设,满足多场景使用需求。易用的软件生态...
  • 支持国产自主CPU品牌:龙芯、申威、鲲鹏、麒麟、飞腾、海光、兆芯。丰富的外设支持兼容主流厂商的打印机、扫描仪、摄像头、高拍仪、读卡器、Raid卡、HBA卡、生物识别设备等外设,满足多场景使用需求。易用的软件生态...
  • 系统平台:中标麒麟(CPU飞腾)6 版本:4.7.6 文档用途 本文档介绍HighGo DB数据库在Linux平台安装过程及注意事项。 本文档只针对安装过程进行说明,数据库完整的功能请参照管理手册、开发手册或其他相关手册...
  • UOS桌面操作系统的下载方法

    千次阅读 2020-07-14 12:35:26
    可支持x86、龙芯、申威、鲲鹏、飞腾、兆芯等国产CPU平台,平台统一,体验一致,代码同源 符合安全可靠环境电子公文要求,适配主流流式文件、版式文件、电子签章功能 进入 ChinaUOS 进行账号注册 ...
  • OA办公系统已经全面完成国产化适配,适配信创生态主流软硬件,目前的 CPU:支持飞腾、鲲鹏、兆芯、海光、龙芯CPU等, 操作系统:统信UOS、银河麒麟、中标麒麟操作系统, 数据库:支持达梦、南大通用、人大金仓、...
  • 此次适配基于鲲鹏、飞腾、龙芯、海光、兆芯等CPU平台,能够满足用户更多样化的应用需求,实现更稳健的数字化转型。 统信服务器操作系统V20是统信软件为满足企业应用及党政军关键业务设计开发的通用操作系统软件,...
  • 目前主流的在ARM技术授权的基础上搞国产芯片开发的方式,显然值得商榷。 近年来,在国家大力扶持集成电路产业的背景下,国内从事高性能CPU设计的单位或公司数量不断壮大。 但美中不足的是,几乎所有单位都认为自己的...
  • linux重新开始学习

    2017-02-21 08:53:41
    主要为国产自主可控下的软硬件测试:1、基于linux内核下的国产操作系统2、基于linux -C 开发 网卡、显卡3、基于国产芯片的linux的服务器、联想、浪潮、长城等4、基于mips架构的龙芯5、基于国产的CPU:龙芯、飞腾、...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

飞腾cpu开发