2 Using NetBeans or Eclipse with the Keil MCBSTM32F200 Board

Developers can run and debug IMlets on the Keil MCBSTM32F200 board directly from the NetBeans IDE or Eclipse IDE using the Oracle Java ME SDK. This chapter describes how to add the board to the Device Selector in the Oracle Java ME SDK and how to debug an IMlet on the board from both the NetBeans IDE and the Eclipse IDE.

Using NetBeans with the Keil MCBSTM32F200 Board

Running and debugging IMlet projects on the Keil MCBSTM32F200 board using the NetBeans IDE requires the following software:

NetBeans IDE 7.3 with Java ME enabled

Oracle Java ME SDK

Oracle Java ME SDK NetBeans Plugin

Install the Oracle Java ME SDK Plugin for NetBeans

After installing NetBeans, use these steps to install the remaining software.

Ensure that Java ME is enabled in NetBeans. This can be done by selection Tools -> Plugins and selecting the Installed pane. Activate the Java ME plugin if it is not already activated.

Install the Oracle Java ME SDK NetBeans plugin. This is a downloadable ZIP file that consists of a number of NetBeans modules (.nbm files) that can be added using the Tools -> Plugins dialog and selecting the Downloaded pane. The Oracle Java ME SDK NetBeans plugin is required to use the Device Selector to connect to the board. See the Oracle Java ME SDK Release Notes for installation instructions:

Ensure that the Oracle Java ME Embedded 3.3 appears in the list of Java ME platforms. In the NetBeans IDE, go to Tools -> Java Platforms. If the Oracle Java ME Embedded 3.3 does not appear in the list of J2ME platforms, follow these steps:

Click on Add Platform.

Select Java ME CLDC Platform Emulator and click Next.

Select the folder where the Oracle Java ME SDK 3.3 runtime for Keil MCBSTM32F200 resides and follow the instructions to install it. Then, click Finish to close the dialog.

Ensure that the Keil MCBSTM32F200 board is running the Oracle Java ME Embedded distribution. See Chapter 1 for more information on how to install the runtime distribution on the Keil MCBSTM32F200 board.

Adding the Keil MCBSTM32F200 Board to the Device Selector

Follow these steps to add the board to the Device Selector in the Oracle Java ME SDK:

Ensure that the property odt_run_on_start is set to true in the file java/jwc_prop.ini on the Keil MCBSTM32F200.

Ensure that the board is receiving power and the Oracle Java ME Embedded software is running.

If necessary, open TCP port 55123 in the firewall settings of your computer. The exact procedure to open a port differs depending on your version of Windows or the firewall software that is installed on your computer.

This sample application will obtain an object representing GPIO pin 1 from the PeripheralManager, and attempt to obtain its high/low value.

Accessing the Peripherals on the Keil MCBSTM32F200

There are two ways to allow access to the peripherals on the Keil MCBSTM32F200. The first is to use unsigned applications and modify the security policy file, and the second is to digitally sign the application with the appropriate API permissions requested in the JAD file.

Method #1: Modifying the Security Policy File

Modifying the security policy file is only necessary in the event that a user must manually install the application on the board, at which point the unsigned application will be installed in the untrusted security domain.

With this method, simply add the line "allow: device_access" to the "untrusted" domains of the security policy file. By default, this is located on the SD card in the appdb/_policy.txt file, but be sure to check the security.policy file entry in the java/jwc_prop.ini file to verify the current file name.

Note that if an application is installed on the board using NetBeans or Eclipse during development, the application will automatically be installed in the maximum security domain as a convenience. Manual installation, however, will install the unsigned application into the untrusted security domain. Note that after development is finished, you should publish your applications with signed API permissions.

Method #2: Signing the Application with API Permissions

The second method is more complex, but is the preferred route for production applications that are widely distributed. First, the JAD file must have the proper API permissions. Right-click the project name (EmbeddedApplication1 in this example) and choose Properties. Select Application Descriptor, then in the resulting pane, select API Permissions. Click the Add... button, and add the com.oracle.deviceaccess.gpio API, as shown in Figure 2-1. Click OK to close the project properties dialog.

This command will generate a 2048-bit RSA key pair and a self-signed certificate, placing them in a new keystore with a keystore password of "spass" and a key password of "kpass" that is valid for 360 days.

Figure 2-3 shown an entire NetBeans debugging environment that allows the programmer to execute a program step by step as well as add and remove variables from a watch list on the bottom of the screen.

For more information on using the device access APIs, please see the Device Access API Guide and the associated javadocs.

Using Eclipse with the Keil MCBSTM32F200 Board

Running and debugging IMlet projects on the Keil MCBSTM32F200 board using the Eclipse IDE requires the following software:

Eclipse 3.7 Indigo or Eclipse 4.2 Juno

Oracle Java ME SDK

Oracle Java ME SDK Eclipse Plugin

Install the Oracle Java ME SDK Plugin for Eclipse

After installing Eclipse, use these steps to install the remaining software.

Browse to the base directory of the Java ME SDK environment and press the OK button. After the platform is scanned and the devices are installed, close each of the respective dialogs.

Adding the Keil MCBSTM32F200 Board to the Device Selector

Follow these steps to add the board to the Device Selector in the Oracle Java ME SDK:

Ensure that the property odt_run_on_start is set to true in the file java/jwc_prop.ini on the Keil MCBSTM32F200.

Ensure that the board is receiving power and the Oracle Java ME Embedded software is running.

If necessary, open TCP port 55123 in the firewall settings of your computer. The exact procedure to open a port differs depending on your version of Windows or the firewall software that is installed on your computer.

Start the Eclipse IDE. In the Eclipse IDE, go to Window -> Show View -> Other. In the popup window that appears, expand the Java ME node and select Device Selector.

This sample application will obtain an object representing GPIO pin 1 from the PeripheralManager, and attempt to obtain its high/low value.

Accessing the Peripherals on the Keil MCBSTM32F200

There are two ways to allow access to the peripherals on the Keil MCBSTM32F200. The first is to use unsigned applications and modify the security policy file, and the second is to digitally sign the application with the appropriate API permissions requested in the JAD file.

Method #1: Modifying the Security Policy File

Modifying the security policy file is only necessary in the event that a user must manually install the application on the board, at which point the unsigned application will be installed in the untrusted security domain.

With this method, simply add the line "allow: device_access" to the "untrusted" domains of the security policy file. By default, this is located on the SD card in the appdb/_policy.txt file, but be sure to check the security.policy file entry in the java/jwc_prop.ini file to verify the current file name.

Note that if an application is installed on the board using NetBeans or Eclipse during development, the application will automatically be installed in the maximum security domain as a convenience. Manual installation, however, will install the unsigned application into the untrusted security domain. Note that after development is finished, you should publish your applications with signed API permissions.

Method #2: Signing the Application with API Permissions

The second method is more complex, but is the preferred route for applications that are widely distributed. Open the Application Descriptor for your project in the Packages window, and select the Application Descriptor pane. You will need to manually add or change the following lines in the Application Descriptor.

This command will generate a 2048-bit RSA key pair and a self-signed certificate, placing them in a new keystore with a keystore password of "spass" and a key password of "kpass" that is valid for 360 days.

Copy the appdb/_main.ks keystore file from the Keil MCBSTM32F200 over to the desktop and perform the following command using the mekeytool.exe command (or alternatively java -jar MEKeyTool.jar... if your distribution contains only that) that ships with the Oracle Java ME SDK 3.3 distribution.

This will import the information in mykeystore.ks you just created to the _main.ks keystore. Once this is completed, copy the _main.ks file back to its original location on the Keil MCBSTM32F200.

Use the following steps to sign your application before deploying to the Keil MCBSTM32F200 board.

Right click your project and select Properties.

Choose the Signing option under the Java ME category.

Check the Enable Project Specific Settings checkbox. Import the mykeystore.ks file that you created as an External... keystore file. Provide the keystore and key passwords that you created earlier. Ensure that the mycert key alias is present.

Ensure that the project is being signed in the project's Application Descriptor. When the project is built and run, it will be digitally signed when deployed to the Keil MCBSTM32F200.

Debugging an IMlet on the Keil MCBSTM32F200 Board

After you assign the board to your project, follow these steps to debug an IMlet:

Open your IMlet class on the Eclipse editor.

Click once directly on the line number where you want to set a breakpoint. The line number has a small circle next to it to indicate a breakpoint.

Select Run -> Debug or use the Debug button on the toolbar.

The debugger connects to the debug agent on the board and the program execution stops at your breakpoint, as shown in Figure 2-4.